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