首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

JMS总结

2012-10-23 
JMS小结1. JMS接收不到消息,p2p模型中接收不到消息(或是第一次可以正常接收,而之后就无法接收) 主要原因:

JMS小结
1. JMS接收不到消息,p2p模型中接收不到消息(或是第一次可以正常接收,而之后就无法接收) 主要原因:    

  每执行一次 QueueReceiver receiver = session.createReceiver(queue)    语句,就会创建一个queue队列消息的消费者,如果在一个应用程序中多 次执  行上述语句,就会产生多个消费者,可以在浏览器中输入http://localhost:8161/admin进行查看。而一旦某个队列有多个对应的消费者,那么JMS提供者将消息发送给那个消费者是不确定的!要想准确收到对应的回复消息,需要使用“消息过滤”。

    
2.   消息的同步异步接收:        
消息的同步接收是指客户端主动去接收消息,JMS 客户端可以采用MessageConsumer 的receive方法去接收下一个消息;消息的异步接收是指当消息到达时,主动通知客户端。JMS 客户端可以通过注册一个实现MessageListener 接口的对象到 MessageConsumer,这样,每当消息到达时,JMS Provider 会调用MessageListener中的onMessage 方法。


3.   消息的push/pull             
QueueReceiver的receive方法从JMS服务器去拉取消息,一次只能取道一条;而如果QueueReceiver设置了一个监听器,一旦有消息,JMS服务器就会将消息推送个QueueReceiver;对于服务器中的消息,如果被发送到某个receiver,而且这个receiver接收到消息后通知服务器,那么这个消息才会被服务器从队列中删除,否则仍然保存在队列中。关于通知的方式就涉及到事务以及消息确认模式等。


4.     Spring JMS       
JmsTemplate用于同步发送消息和接收消息; Spring框架通过MDP支持消息的异步接收,在Spring中,配置异步消息侦听器有3中不同的方式:实现javax.jms.MessageListener接口,实现Spring的SessionAwareMessageListener,以及在Spring的MessageListenerAdapter类中包装一个标准的POJO。



热点排行