我正在研究JMS,现在我想了解提供商确认模式。
我看过Sun GlassFish Message Queue 4.4 Developer's Guide for Java Clients
我了解消费者承认的工作原理。但目前尚不清楚制作人确认模式的工作原理。
注 - 上面讨论的所有确认模式都适用于 消息消费。对于消息生产,经纪人 确认行为取决于消息的传递模式 (持久性或非持久性;请参阅消息标题)。经纪人 承认收到持久性消息,但没有 不存在的;客户端无法配置此行为。
因此,生产者有另一种称为消息传递模式的选项,它可以是持久的和非持久的。
消费者确认仅适用于持久模式。 它以某种方式与交易模式有关。看起来像是地狱。 我无法理解它是如何工作的。你能解释它在实践中是如何运作的吗?
另外如果您可以与spring-jms分享示例
,我会很有帮助答案 0 :(得分:0)
Producer Acknowledgement:不得丢失持久消息。因此,代理首先尝试将给定的持久消息放入队列。如果put成功,那么代理将生成“成功”返回代码的消息发送给生产者应用程序。如果代理未成功将消息放入队列,例如队列已满,则代理将返回“错误”返回码。这是为了确保生产者应用程序知道错误并采取适当的措施。
另一方面,对于非持久性消息,当应用程序进行put方法调用时,代理不会尝试放置消息。相反,代理会将消息保留在其缓存或其他存储中并返回给调用者,说“我已收到您的消息但尚未将其放入队列中。我稍后会这样做”。由于put调用立即返回(实际上没有将消息放入队列),因此生产者可以放入更多消息,从而增加消息吞吐量。这种类型的功能在发布股票交易所指数(例如纽约证券交易所)的情况下非常有用,其中股票指数的变化非常快。