> For the complete documentation index, see [llms.txt](https://kk-5.gitbook.io/interview/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kk-5.gitbook.io/interview/xiao-xi-dui-lie.md).

# 消息队列

**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>
