簡體   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