傳送訊息有多輕量
常見問題 > 使用 Apache ActiveMQ Classic > 傳送訊息有多輕量
適用於 ActiveMQ Classic 3.x/4.x
這取決於情況。
如果您在 JMS 事務中,並使用非持久性訊息傳遞,那麼它的速度相當快且輕量 – 通常只會阻塞直到訊息進入 socket 緩衝區。但是,如果您使用持久性訊息傳遞且不使用 JMS 事務,那麼預設情況下,我們將與代理程式執行阻塞式的請求-回應,以確保訊息在調用 send() 完成時已持久保存到磁碟上 – 這速度相當慢。
但是,如果您真的希望它非常輕量且快速,請在您的 JMS 連線上啟用異步傳送。
如果您真的需要低延遲,例如在 GUI 線程或高效能伺服器中,您可能需要啟用異步傳送。異步傳送唯一的缺點是,如果傳送因任何原因失敗(通常是安全性異常或某些傳輸失敗),則不會在傳送者線程中拋出異常,因為所有工作都是異步完成的,但是您的 ErrorListener 會收到通知。
(如果您使用可靠的傳輸,則可以讓 JMS 用戶端處理傳輸錯誤,並斷開連線並重新連線到另一個代理程式,為您處理自動重新連線。)