public
class
producer
producer.
close()
; connection.
close()
;}}
值得注意的是session.client_acknowledge
,需要consumer
進行返回確認才會進行刪除。
一般來說,如果只是簡單的佇列,pop
之後,資料就和佇列無關了。如果消費端服務異常,那麼,已經取出的資料將得不到正確的處理,並且直接丟失,無法再找到。
商業應用中,為了防止資料丟失,應當由消費端消費完成再進行移除,避免資料丟失
public
class
consumer
catch
(jm***ception e)}}
);}}
consumer.
setmessagelistener
(new
messagelistener()
catch
(jm***ception e)}}
);
採用***,就不必消耗資源去阻塞等待,而且單條的receive
了。
當佇列存在且未被消費的訊息時,就會自動觸發onmessage
方法進行處理。
同時,乙個consumer
可以設定多個listener
,也就是說,乙個訊息可以進行多步處理。
但是避免混淆的是,乙個訊息只能被乙個consumer
處理一次,除非處理完畢之前掛掉,沒有確認刪除。
message.
acknowledge()
;
當訊息處理完畢之後,應該返回乙個確認指令,通知mq
移除該訊息。
注意模式需要設定為session.client_acknowledge
。
當同乙個destination
存在多個consumer
的時候,預設是輪詢進行訊息的獲取。也就是說,當前例子,如果
consumer
啟動兩個例項,一邊輸出奇數,一邊輸出偶數。
ActiveMQ 訊息確認
一 事務性會話 當乙個事務被提交的時候,確認自動發生 connectionfactory connectionfactory new activemqconnectionfactory tcp connection connection connectionfactory.createconnect...
activemq和zookeeper集群環境部署
activemq和 zookeeper集群環境部署 集群 對應三個環境分別都要部署zookeeper和mq 1.zookeeper的安裝部署 注意,其中倆個 zookeeper 安裝在同乙個 linux 中 1 解壓 tar zxvf zookeeper 3.4.6.tar.gz 2 將 conf ...
Activemq優點和缺點
activemq有自己的特點和優勢 1 activemq可以很好的執行在任何jvm上,而不只是整合到jboss的應用伺服器中 2 activemq支援大量的跨語言客戶端 3 activemq支援許多不同的協議,如ajax,rest,stomp,openwire,xmpp 4 activemq支援許多...