ActiveMQ的JMS訊息可靠機制

2022-09-02 22:54:33 字數 1321 閱讀 1306

activemq訊息簽收機制:

客戶端成功接收一條訊息的標誌是一條訊息被簽收,成功應答。

訊息的簽收情形分兩種:

1、帶事務的session

如果session帶有事務,並且事務成功提交,則訊息被自動簽收。如果事務回滾,則訊息會被再次傳送。

2、不帶事務的session

不帶事務的session的簽收方式,取決於session的配置。

activemq支援以下三種模式:

session.auto_acknowledge  訊息自動簽收

session.client_acknowledge  客戶端呼叫acknowledge方法手動簽收

textmessage.acknowledge();//手動簽收

session.dups_ok_acknowledge 不是必須簽收,訊息可能會重**送。在第二次重新傳送訊息的時候,訊息

只有在被確認之後,才認為已經被成功地消費了。訊息的成功消費通常包含三個階段:客戶接收訊息、客戶處理訊息和訊息被確認。 在事務性會話中,當乙個事務被提交的時候,確認自動發生。在非事務性會話中,訊息何時被確認取決於建立會話時的應答模式(acknowledgement mode)。

帶事務的session:

生產者必須在生產完資料後手動提交session

session session = connection.createsession(true, session.auto_acknowledge);

。。。。。。。。

session.commit();

生產者不呼叫commit方法訊息無法到達訊息佇列

消費者在消費完資料之後也必須手動提交session

session session = connection.createsession(true, session.auto_acknowledge);

。。。。。。。。

session.commit();

消費者不呼叫commit方法訊息無法從訊息佇列銷毀

不帶事務的session:

1.自動簽收(不靠譜)

session session = connection.createsession(false, session.auto_acknowledge);

2.手動簽收

session session = connection.createsession(false, session.client_acknowledge);

消費者必須顯示呼叫手動簽收的方法進行簽收,否則佇列當中還是存在資料

message.acknowledge();

activemq集合JMS處理非同步訊息

jms 傳送 public static void main string args throws exception session.commit session.close connection.close 原始碼 copy to clipboard列印?public static void m...

Active MQ技術文章 JMS

將已經有的mq的demo 傳送到部落格上 如何部署自己部署mq jml理論 wsad環境下jms非同步通訊全攻略 1 學習其對jms說明部分 使用 apache geronimo 和 jms 構建事件驅動的框架 jms 基本可靠性機制 和 事務機制 jms簡介與activemq實戰 總結的挺好的 配...

JMS訊息集群

jms集群的意義在於提公升系統在處理訊息時的併發能力,建立這樣的集群,有三個步驟 1.配置jms訊息持久化所使用的資料庫 2.配置分布式的jndi環境 3.配置分布式jms集群 在jboss集群中,系統採用hibernate的方式來儲存訊息,所以能夠相容hibernate支援的所有資料庫。jboss...