ActiveMQ如何保证消息不丢失

如何确保ActiveMQ的消息不会丢失呢?
除了消息持久化,还要取决于ACK的返回,主要设置服务器session。默认是Session.AUTO_ACKNOWLEDGE,客户端onmessage监听到接收后,返回ACK给服务器。这样就能保证消息不会丢失了。
(还有其他设置,Session.CLIENT_ACKNOWLEDGE ,客户端主动调用acknowledge 方法签收消息,第三种是Session.DUPS_OK_ACKNOWLEDGE 此选项指示 Session 不必确保对传送消息的签收.)

如果消费者挂了,服务器一直向他发送消息,默认为6次,会一直发完6次吗?
会的,因为消息设置持久化,如果服务器最后没收到ACK,则停止发送,并保存在存储区,当有新的消费者连接上时重新发送这条消息。

你可能感兴趣的:(ActiveMQ)