繁体   English   中英

ActiveMQ中消费者的确认

[英]Acknowledgement from Consumer in ActiveMQ

我正在使用ActiveMQ编写Java应用程序。 我有一个Producer类(它接受用户输入)和一个带有监听器的Consumer Class,因此一旦消息到达,Message Listener就会执行onMessage(msg)函数。 不过,我的问题是,消费者何时将确认信息发回给经纪人,以便msg从经纪人那里退出? 是在完成onMessage(msg)函数中写入的操作之后还是仅在调用onMessage(msg)函数时?

取决于它的配置方式,部分取决于您如何使用交易

您使用的是消息驱动的bean吗? 在这种情况下,我相信在成功提交交易时将发送确认。 请参阅规范 (特别是'ejbcore'版本),第5.4.14“JMS消息驱动Bean的消息确认” ,其中说:

消息确认由容器自动处理。 如果消息驱动的bean使用容器管理的事务划分,则消息确认将作为事务提交的一部分自动处理。

它继续说:

如果使用bean管理的事务划分,则消息接收不能是bean管理的事务的一部分,并且在这种情况下,容器确认收据。 如果使用bean管理的事务划分,则Bean Provider可以通过使用MessageDriven批注的activationConfig元素或使用activation-config-property部署描述符元素来指示是应该应用JMS AUTO_ACKNOWLEDGE语义还是DUPS_OK_ACKNOWLEDGE语义。

但是,由于你真的不应该使用bean管理的事务,这有望无关紧要。

在正常情况下,ack在onMessage完成后发送,因为它需要处理onMessage抛出异常的情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM