是否可以CLIENT_ACKNOWLEDGE
在 JMS 的生产者端使用?那么它是什么意思呢?我的意思是承认是消费者方面的事情。
问问题
468 次
1 回答
2
不,消息确认纯粹是消费者方面的概念。创建 JMS 会话时,您可以在多种确认模式中进行选择。消息确认背后的想法与面向消息的中间件 (MOM) 中保证交付的概念有关。简而言之,当您通过 MOM 实现发送消息时,该消息将被持久化(由生产者),直到它被发送给消费者并且消费者确认它的传递(或直到消息过期)。如果消费者在合理的时间内没有收到确认,则生产者重新发送消息。每种模式对消息传递的影响不同。
在 AUTO_ACKNOWLEDGE 模式下,消费者通过会话接收到的任何消息都将在接收时由底层 JMS 运行时的消费者自动确认。
在 CLIENT_ACKNOWLEDGE 模式下,消费者通过会话接收到的每条消息都必须被显式确认。这意味着确认消息的责任落在应用程序而不是 JMS 运行时。通常,消费者需要acknowledge()
在处理完方法中的消息后调用会话上的onMessage()
方法。
还有一个类似于 AUTO_ACKNOWLEDGE 的 DUPS_OK_ACKNOWLEDGE 设置,但是由 JMS 实现延迟发送确认,这可能会导致重复接收消息。
通常,当您需要对消息的确认进行显式控制时,您会使用 CLIENT_ACKNOWLEDGE 模式。
于 2012-09-21T11:35:12.253 回答