消息队列

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");

消息可靠性传输和事务控制

http://blog.csdn.net/flashflight/article/details/51724401

Last updated