AMQ學習筆記 - 21. 異步發送


原文地址: Async Sends

背景


ActiveMQ支持同步、異步兩種發送的模式將消息發送到broker,模式的選擇對發送延時有巨大的影響。producer能達到怎樣的產出率 [1],主要受發送延時的影響,使用異步發送,可以顯著的提高發送的性能。
[1] 產出率:發送的數據量/時間。
 
ActiveMQ默認使用異步發送的模式:除非明確指定使用同步發送的方式,或者在未使用事務的前提下發送持久化的消息,這兩種情況都是同步發送的。
 
如果你沒有使用事務,且發送的是持久化的消息,每一次發送都是同步發送的,且會阻塞producer,直到broker返回一個確認,表示消息已經被安全的持久化到磁盤。確認機制提供了消息安全的保障,但同時會阻塞客戶端,帶來了很大的延時。
 
很多高性能的應用,允許在失敗的情況下有少量的數據丟失。如果你的應用滿足這個特點,你可以使用異步發送來提高生產率,即使發送的是持久化的消息。

異步發送配置


1.在連接的URI中配置

你可以使用 連接的URI支持的參數來配置異步發送的模式,如下所示:
cf = new ActiveMQConnectionFactory("tcp://locahost:61616?jms.useAsyncSend=true");

 

2.在ConnectionFactory層配置

你可以使用ActiveMQConnectionFactory對象實例,並通過下面的設置來使用異步模式:
((ActiveMQConnectionFactory)connectionFactory).setUseAsyncSend(true);

 

3.在Connection層配置

在Connection層的配置,將覆蓋在ConnectionFactory層的配置。
你可以使用ActiveMQConnection對象實例,並通過 下面的設置來使用異步模式:
((ActiveMQConnection)connection).setUseAsyncSend(true);

 

相關資源







免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM