JMS中的DeliveryMode和DurableSubscriber以及在activeMQ中的小BUG

DeliveryMode

DeliveryMode.PERSISTENT   是指服务器中  
message 在queue里面只要没被消费掉 或者 在topic上仍然有至少一个 DurableSubscriber 没有收到 
那么message就是仍然存在的,重启仍然存在。
producer发送消息时 消息的DeliveryMode属性默认的是NON_PERSISTENT的,PERSISTENT会占内存 影响性能。




DurableSubscriber
持久订阅者。
只要这个持久订阅者一旦被创建,监听了一个topic开始。从这个时间点开始,之后的publish的message都不会遗漏
(除非Broker ,JMS provider重启,而且message是NON_PERSISTENT这种情况message会丢失)其它情况包括,
期间这个subscribe停止了一会。在它回来之后消息任然在,任然会接收到。
topic中的message的销毁条件是,这个topic上的所有的这个message时间点之前的DurableSubscriber全部都接收到才会销毁。


创建一个DurableSubscriber的两个前提条件是
connection.setClientID("***");
session.createDurableSubscriber(topic,"SubscriberName");


1,connection的clientID
2,SubscriberName    (在activeMQ里面遇到的小BUG是subscriberName和topicName不能重复,不然会出现不可预料的错误,比如接收消息无响应


这两个属性帮助 JMS中间件 来确定 你这个 DurableSubscriber 再次连接上来的时候,
对应于我JMS中间件上记录的哪个DurableSubscriber


你可能感兴趣的:(中间件,activemq,jms,服务器)