[英]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
部署描述符元素来指示是应该应用JMSAUTO_ACKNOWLEDGE
语义还是DUPS_OK_ACKNOWLEDGE
语义。
但是,由于你真的不应该使用bean管理的事务,这有望无关紧要。
在正常情况下,ack在onMessage完成后发送,因为它需要处理onMessage抛出异常的情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.