JMS (Java Message Service) 是 Java EE 訊息傳遞標準。開源實作眾多,本文整理主流開源 JMS 提供者特性,協助專案選型。
| 中介軟體 | JMS 版本 | 核心特性 | 適用場景 |
|---|---|---|---|
| ActiveMQ | JMS 1.1 | Apache 項目、支援 Spring、Geronimo 整合、支援 AMQP/STOMP/MQTT、高可用主從/叢集、KahaDB 預設持久化 | 企業級應用、微服務訊息總線、物聯網、高吞吐場景 |
| OpenJMS | JMS 1.0.2 | PTP 與 Pub/Sub 模型、同步/非同步傳送、JDBC 持久化、視覺化管理、支援 RMI/TCP/HTTP/SSL、Applet 客戶端 | 教學、輕量級專案、需 Web 管理介面的環境 |
| MantaRay | JMS 1.1 | Peer-to-Peer 架構、無中央 Broker、支援 PTP/PubSub、事務/持久訂閱/訊息過濾、TCP/UDP/HTTP 傳輸、可整合 WebLogic/WebSphere | 去中心化架構、邊緣運算、動態網路拓撲 |
| HermesJMS | — | 非 JMS Provider,為通用 JMS 客戶端工具,Swing UI 監控/瀏覽各類 JMS Provider | 開發除錯、訊息瀏覽、管理操作 |
| JORAM | JMS 1.1 | ObjectWeb 項目、支援 JNDI、可嵌入式、叢集、多種持久化選項 | 嵌入式應用、學術研究、需輕量 Broker 的場景 |
| UberMQ | JMS 1.1 | 強調簡單快速、完整 JMS 實作、輕量級 | 中小型專案、快速原型開發 |
| Somnifugi | — | 同一 JVM 內執行緒間訊息傳遞,非網路中介軟體 | 單機模組解耦、單元測試模擬 |
| mom4j | JMS 1.1 (相容 1.0/1.02) | 自有訊息存儲、語言中立、多語言客戶端 | 異構語言整合、需自訂存儲引擎 |
| Presumo | JMS 1.1 | 輕量級實作 | 資源受限環境 |
| JMS4Spread | 部分 JMS API | 基於 Spread Toolkit 群組通訊 | 群組訊息、高可用廣播 |
若專案非強制 JMS API,可評估 Apache Kafka(高吞吐日誌/事件流)、RabbitMQ(AMQP、複雜路由)、NATS(輕量、低延遲)、Pulsar(多租戶、地理複寫),這些在微服務架構中更主流。