消息队列
ActiveMQ可靠性
消息只有在被确认后才被认为是被消费了,
i)客户接受
ii)客户处理消息
iii)消息确认
在事务性会话中一个消息被提交的时候,确认自动发生,在非事务性会话中.消息何时被确认取决于会话时的应答模式:
i)自动确认;当从receive或onMessage方法返回的时候,会话自动确认收到消息
ii)客户端确认;客户通过消息的acknodldge确认消息,这个时候确认一个被消费的消息默认会自动确认所有这个session所收到的的消息
iii)延时/批量确认;在一次收到多个消息之后再进行确认,减少了session的开销但是可能会有重复的消息.
消息重发机制
i)在使用事务的session中调用了rollback()
ii)在使用事务的session中调用commit()之前session已经关闭
iii)在session中使用了CLIENT_ACKNOWLWDGE模式,并且调用了recover()方法.
JMS的可靠性机制
确认机制
优先级
持久性
消息过期
会就订阅
本地事务
ActiveMQ
i)持久化存储,KahaDB,JDBC
i)异步发送(强制同步:不使用事务并且发送持久消息)
i)消息预取(预取限制(prefetchsize)为0表示消费者将不停的轮询是否有更多的需要处理的消息,以替代推送消息到消费者的模式,pool消费者问题)
i)消息游标,vmCursor/fileCursor
i)流量控制
i)死信队列7次重发
i)多目的地址Queuequeue = newActiveMQQueue("FOO.A,topic://NOTIFY.FOO.A");
消息可靠性传输和事务控制
Last updated