我應該使用交易嗎

 常見問題 > JMS > 我應該使用交易嗎

用戶端可以消費訊息的主要方法有四種。它們是

  1. 自動確認
  2. 透過 Message.acknowledge() 顯式確認
  3. JMS 交易
  4. XA

關於 XA 的討論,請參閱:我應該使用 XA 嗎

1 和 2 與 3 和 4 之間的主要區別在於,後者允許在處理過程中發生錯誤時回滾訊息並重新傳遞。 沒有 JMS 的「取消確認」。 因此,在大多數使用情況下,應優先選擇 JMS 交易而非訊息確認。

一個常見的誤解是交易本質上很慢。 事實上,從代理的角度來看,使用 JMS 交易與呼叫 Message.acknowledge() 之間的效能差異不大。 但是,當傳遞模式設定為持續性時,會產生效能損失。 這會導致代理封鎖,直到提交同步到磁碟。 這類似於使用非交易式 JMS 會話時 Message.acknowledge() 的封鎖方式。

非持續性傳遞模式也提供交易支援。

批次交易是處理訊息的最快方式!

值得注意的是,消費持續性訊息的最快方式是使用 JMS 交易結合訊息批次處理,例如,讓提交邊界包含多個訊息,而不僅僅是一個。 這適用於生產者和消費者,也適用於同時身兼兩者的用戶端。

當使用交易時,例如,可以在單個原子步驟中傳送一批 1000 條訊息。 訊息傳輸是非同步的,因此速度非常快。 生產者只需要在每個批次執行一次提交,以最大程度地減少因磁碟同步而產生的延遲。

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛標誌和 Apache ActiveMQ 專案標誌是 The Apache Software Foundation 的商標。 版權所有 © 2024,The Apache Software Foundation。 根據 Apache License 2.0 授權。