《机械公敌》观后感- -| 回首页 | 2004年索引 | - -超越阐释

轻量级的JMS消费者- -

                                      

在《剖析EJB》里我曾经说过,Message Driven Bean是一种理想的JMS消费者,因为它让你不必自己去考虑轮询、线程之类的麻烦事情。Jakarta Commons-Messenger是一个轻量级的JMS消费者框架,它用一个servlet来轮询、分发JMS消息,并用MDO(Message Driven Object)实际处理消息。实际上Commons-Messenger也包含了对“发送JMS消息”的封装,不过相比之下消费者框架这部分更有价值一些。
 
首先在web.xml中声明轮询JMS的servlet:
 
  <servlet>
    <servlet-name>managerServlet</servlet-name>
    <servlet-class>org.apache.commons.messagelet.ManagerServlet</servlet-class>
    <init-param>
      <param-name>connections</param-name>
      <param-value>/WEB-INF/Messenger.xml</param-value>
    </init-param>
    <init-param>
      <param-name>subscriptions</param-name>
      <param-value>/WEB-INF/subscriptions.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

 
Commons-Messenger用到两个配置文件。Messenger.xml指定获得ConnectionFactory对象的JNDI配置:
 
<manager>
   <messenger name="topic" jndiDestinations="false" persistentDelivery="true">
    <jndi lookupName="JmsTopicConnectionFactory" topic="true" acknowledge="auto">
      <property>
        <name>java.naming.factory.initial</name>
        <value>org.exolab.jms.jndi.InitialContextFactory</value>
      </property>
      <property>
       <name>java.naming.provider.url</name>
       <value>rmi://localhost:1099/</value>
      </property>
    </jndi>
  </messenger>
</manager>
 
subscriptions.xml指定要监听的频道(Queue或者Topic)以及用于处理消息的MDO:
 
<subscriptions>
  <subscription connection="topic" subject="topic1">
    <listener className="com.jbbis.cms.jms.UserMDO"/>
  </subscription>
</subscriptions>
 
 
MDO继承MessengerMDO类,并实现onMessage方法:
 
public class UserMDO extends MessengerMDO {
 public void onMessage(Message arg0) {
    ...  // 处理消息
 
Commons-Messenger项目现在仍在sandbox阶段,异常处理非常糟糕,几乎无法得到有用的错误信息。在读取配置文件的地方(ManagerServlet.getResourceURL方法)也有错误,需要对代码做些修改。除此之外,我认为Commons-Messenger是一个很好的JMS消费者框架。

- 作者: gigix 2004年08月3日, 星期二 21:18

Trackback

你可以使用这个链接引用该篇日志 http://publishblog.blogdriver.com/blog/tb.b?diaryID=268452

博客手拉手

回复

- 评论人:sihyscxt

Thu May 17 06:41:27 CST 2007  作者邮箱  作者Blog

qqxwxwmedi[url=http://zvore.yi.org/82177478.html]brazilian pussy[/url][url=http://xenggi.66ghz.com/46330167.html]gun games[/url][url=http://wxaxw.22web.net/34298878.html]tatoo designs[/url][url=http://www32.websamba.com/viora/94041272.html]model com[/url][url=http://uenvc.22web.net/16709694.html]football games[/url][url=http://ninfrb.yi.org/20352297.html]blades glory cam xvid mvs[/url]

- 评论人:dsridnid

Thu May 17 05:20:07 CST 2007  作者邮箱  作者Blog

aaxwxwmeos[url=http://zvore.yi.org/82177478.html]brazilian pussy[/url][url=http://xenggi.66ghz.com/46330167.html]gun games[/url][url=http://wxaxw.22web.net/34298878.html]tatoo designs[/url][url=http://www32.websamba.com/viora/94041272.html]model com[/url][url=http://uenvc.22web.net/16709694.html]football games[/url][url=http://ninfrb.yi.org/20352297.html]blades glory cam xvid mvs[/url]

- 评论人:wckswwbn

Thu May 17 03:37:00 CST 2007  作者邮箱  作者Blog

tdxwxwmehc[url=http://zvore.yi.org/82177478.html]brazilian pussy[/url][url=http://xenggi.66ghz.com/46330167.html]gun games[/url][url=http://wxaxw.22web.net/34298878.html]tatoo designs[/url][url=http://www32.websamba.com/viora/94041272.html]model com[/url][url=http://uenvc.22web.net/16709694.html]football games[/url][url=http://ninfrb.yi.org/20352297.html]blades glory cam xvid mvs[/url]

- 评论人:还在想

Wed Aug 04 15:10:17 CST 2004 

能干吗,举个应用的例子好不好?

- 评论人:wang jun

Wed Aug 04 08:52:48 CST 2004  作者邮箱  作者Blog

真是一个不错的项目,可以和activeMQ配合,就可以生成一套轻量级JMS解决方案。

我现在正在做fs jndi的jms consumer,是实现jms messageListener,这样就不需要应用服务器了。

评论内容: