ActiveMQ中Session設定的相關理解
參考部落格文章:http://www.cnblogs.com/SzeCheng/p/4792084.html
參考部落格文章:http://activemq.apache.org/producer-flow-control.html
名詞解釋:
P:生產者
C:消費者
服務端:P 或 ActiveMQ服務
客戶端:ActiveMQ服務 或 C
客戶端成功接收訊息的標誌是這則訊息被簽。成功接收一則訊息一般包含以下三個階段:
1.客戶端接收訊息;
2.客戶端處理訊息;
3.訊息被簽收。
session = connection.createSession(Boolean.false, Session.CLIENT_ACKNOWLEDGE);##第一个参数控制事务,第二个参数控制消息
在不帶事務的 Session 中,一則訊息何時和如何被簽收取決於Session的設定。
1. Session.AUTO_ACKNOWLEDGE
當客戶端從 receive 或 onMessage成功返回時,Session 自動簽收客戶端的這條訊息的收條。
2. Session.CLIENT_ACKNOWLEDGE
客戶端透過呼叫訊息的 acknowledge 方法簽收訊息。
message.acknowledge();
在帶事務的 Session 中,簽收自動發生在事務提交時。如果交易回滾,所有已經接收的訊息將會再次傳送。其實這裡的Session.CLIENT_ACKNOWLEDGE 用處不大。
session = connection.createSession(Boolean.TRUE, Session.CLIENT_ACKNOWLEDGE);
session.commit();
總結:
1、對於生產者:服務端端為P,客戶端為ActiveMQ服務。 Session設定為AUTO_ACKNOWLEDGE 和CLIENT_ACKNOWLEDGE ,相對來說差異不是很大,視情況考慮。
2、對於消費者:服務端為ActiveMQ為服務,客戶端為C。 Session設定為AUTO_ACKNOWLEDGE ,接收到訊息(receive 或 onMessage成功返回時),即為消費成功,然後從佇列移除該資料。不關心該資料有沒有正確被處理成我們想要的結果;Session設定為CLIENT_ACKNOWLEDGE 時,必須手動呼叫acknowledge 方法才為消費成功,然後從佇列移除該資料。
3、P和C的Session設定成哪一種模式,互不影響。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

1.選擇合適的客戶端傳輸協定ActiveMQ支援多種客戶端傳輸協議,包括STOMP、AMQP和OpenWire。根據您的應用程式需求選擇合適的協議,以優化效能和可靠性。 2.配置訊息持久性持久性訊息即使在伺服器重新啟動後也能持久化,而非持久性訊息則不會。對於關鍵訊息,選擇持久性以確保可靠傳遞。示範程式碼://設定訊息持久性MessageProducerproducer=session.createProducer(destination);producer.setDeliveryMode(Deliv

1.訊息路由使用JMSSelectors過濾訊息:使用JMSSelectors根據訊息屬性對傳入訊息進行篩選,僅處理相關訊息。建立自訂訊息路由器:擴展ActiveMQ的路由功能,透過編寫自訂路由器將訊息傳送到特定目的地。配置輪詢負載平衡:將傳入訊息平均分佈到多個訊息消費者,提高處理能力。 2.持久性啟用持久性會話:確保即使應用程式或伺服器發生故障,訊息也能持久存儲,避免遺失。配置死信佇列(DLQ):將處理失敗的訊息移至DLQ,以便重新處理或分析。使用Journal儲存:提高持久性訊息的效能,減

ActiveMQ是Apache出品的開源訊息中間件,它使用Java語言開發,具有可靠的訊息傳遞、非同步通訊和叢集支援等特點。 ActiveMQ能夠在不同的應用之間進行資料交換,並且支援多種訊息協議,如JMS、AMQP和MQtT等。 1.ActiveMQ的優勢ActiveMQ是一款非常成熟的訊息中間件,它具有以下優勢:可靠的訊息傳遞:ActiveMQ能夠保證訊息的可靠傳遞,即使在網路故障或伺服器宕機的情況下,訊息也不會丟失。非同步通信:ActiveMQ支援非同步通信,允許不同的應用之間進行非即時的通信。

目錄結構引入maven依賴org.springframework.bootspring-boot-starter-parent1.5.4.RELEASEUTF-8UTF-81.8org.springframework.bootspring-boot-starterorg.springframework.bootspring-boot-startootspring-boot-starterorg.springframework.bootspring-boot-startootspring-boot-starterorg.啟動器-testtestorg.springframework

1.訊息代理(Broker)ActiveMQ核心元件,負責處理所有訊息流。它提供一個平台,應用程式可以連接、發送和接收訊息。 BrokerServicebroker=newBrokerService();broker.addConnector("tcp://0.0.0.0:61616");broker.start();2.訊息佇列在ActiveMQ中儲存訊息的邏輯概念容器。訊息隊列可以從多個生產者接收訊息,並將其傳遞給多個消費者。 Queuequeue=session.createQueue("my

1.JavaJMS簡介JavaJMS是一個用來建立、傳送和接收訊息的Javaapi。它提供了可靠的訊息傳遞功能,非常適合分散式系統和企業級應用程式。訊息傳遞系統可以將訊息從一個應用程式發送到另一個應用程序,即使這兩個應用程式位於不同的機器上。 2.JMSAPIJMSAPI定義了一系列介面和類,用於發送和接收訊息。這些介面和類別包括:javax.jms.ConnectionFactory:用於建立連接到JMS伺服器的連線。 javax.jms.Connection:連接到JMS伺服器的連線。 javax.

1導入整合所需的依賴:org.springframework.bootspring-boot-starter-activemq2建立application.properties檔案spring.activemq.broker-url=tcp://127.0.0.1:61616spring.activemq.user=adminspring.activemq. password=adminserver.port=8080queue=myqueue3.自訂設定檔QueueConfig讀取設定檔

ActiveMQ是完全開源的Java訊息伺服器,也是Apache軟體基金會旗下最受歡迎的專案之一。它遵循Java訊息服務(JMS)規範,提供了一套用於建立分散式、非同步和以訊息為導向的應用程式的api。 ActiveMQ以其可靠性、高效性和靈活性而著稱,使其成為各種企業應用程式的理想選擇。可靠性:ActiveMQ使用持久化儲存機制來確保訊息的可靠傳遞。當訊息被傳送到ActiveMQ時,它將被寫入磁碟,即使伺服器發生故障,這些訊息也不會遺失。當伺服器重新啟動時,它會從持久化儲存中恢復這些訊息,並將其傳
