如何有效率地使用 JMS

 常見問題 > JMS > 如何有效率地使用 JMS

如何有效率地使用 JMS?

JMS 的設計旨在實現高效能。特別是,其設計目的是讓您在應用程式啟動時預先建立許多物件,然後在整個應用程式中重複使用它們。例如,最好預先建立並重複使用以下項目:

  • 連線 (Connection)
  • 工作階段 (Session)
  • 訊息生產者 (MessageProducer)
  • 訊息消費者 (MessageConsumer)

原因在於,每次建立和銷毀上述物件通常都需要與 JMS Broker 進行個別的請求和回應,以確保其正常運作。例如,建立連線、工作階段、生產者,然後發送訊息,再關閉所有項目 — 可能會導致與伺服器進行 7 次請求-回應!

請注意一個小技巧 — 您可以重複使用同一個 MessageProducer 將訊息發送到不同的目的地;只需使用 null 目的地建立它,並在 send 方法中指定目的地即可。

使用 null 目的地建立的 MessageProducer 實例是匿名生產者,因此 Broker 無法在建立這些實例時觸發生產者的通知。這表示當集區化的 MessageProducer 在使用中時,永遠不會發送生產者的通知。

將集區化與 JMS 結合使用

為了有效率地使用 JMS,我們建議您使用 Camel 來隱藏 JMS API,並將 訊息傳遞繫結到您的 Bean

或者,嘗試使用 Spring 的 MessageListenerContainer 來取用訊息,並使用 JmsTemplate 來發送訊息 — 但請注意其陷阱

其他效能提示

另請參閱

Java 連接器架構

Java 連接器架構透過使用 JCA 資源配接器,支援 JMS 連線、工作階段和 MessageListener 的集區化、並行訊息處理、執行緒集區化以及交易和例外處理。

所有這些優點也可透過 Spring 的 MessageListenerContiner 取得,除了 XA 交易之外。如果您需要 XA 支援,則必須使用 JCA

通常 JCA 會在 J2EE 容器中透過 MDB 使用;不過,有一個基於 POJO Spring 的 JCA 容器可供您使用,它簡單輕巧,且易於嵌入 Tomcat 或任何 J2SE 應用程式中。

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛標誌和 Apache ActiveMQ 專案標誌是 Apache 軟體基金會的商標。版權所有 © 2024,The Apache 軟體基金會。根據 Apache License 2.0 授權。