[英]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.