JMS 是 Java 面向消息的中間件 (MOM) 的實現,并且是用于在 MQ(消息隊列)服務器中發送和接收消息的 DeFacto 標準。 MQ 服務器充當消息發送方和接收方之間的中間人;這是在消息隊列的幫助下完成的。想學習java技術,建議考慮報名參加Java培訓,有明確的學習路線和全面系統的課程,能獲得較快提升。
Spring JMS 可以有效地用于建立應用程序之間的通信。可以開發一個面向消息的中間件,通常稱為 MQ 服務器,以建立通信。消息隊列或 MQ 服務器的主要好處是它支持松散耦合的異步應用程序集成。
假設,在一個不同的系統中,運行在不同機器上的應用程序需要通信/我們有什么選擇?當然,我們可以使用 SOAP 或 REST Web 服務,但我們還有其他選擇嗎?毫無疑問,Web 服務是一個可行的選擇,但在許多情況下,它可能不可用甚至無法使用。在這種情況下,我們可以使用 JMS 并通過實現 MQ 服務器將我們的消息放入消息隊列中。想要發送消息的應用程序將消息移交給 MQ 傳輸。然后它在向發送者確認任何回執之前立即將消息寫入磁盤。在消息交換期間,協議確保消息被傳遞并且沒有消息丟失。
消息傳遞技術
有兩種主要的消息傳遞模型:點對點和發布者-訂閱者。 MQ 服務器保留了一個隊列和主題列表,它們分別遵循這兩種模型。在這兩者中,MQ 服務器模型使應用程序能夠連接并發送和接收消息。
隊列遵循點對點消息交換模型。當生產者發送消息時,它會被放入服務器維護的隊列中。消息被傳遞給作為下一個消費者立即連接的那個。發送者和接收者是預定義的和靜態的。通過參加java培訓課程,你可以學習更多java工具,以提高java技能。
另一方面,主題是發布者-訂閱者消息模型的實現。這里的想法更加通用,因為任意數量的客戶端都可以訂閱主題內的消息。因此,當發布特定主題的消息時,它會傳遞給所有訂閱該主題的客戶端。這種技術更具動態性,因為可以在運行時更改指定的發布者訂閱者角色。
JMS的關鍵組件如下:
JMS Provider:它是一個提供消息代理服務的MOM實現。 此外,它還提供了管理和控制所需的其他功能,這些功能對于功能齊全的消息傳遞產品(ActiveMQ、IBM MQ 等)是必不可少的。
JMS 客戶端:JMS 客戶端是接收和發送消息的應用程序。
JMS 生產者或發布者:它表示兩種類型的 JMS 客戶端,它們使用消息隊列或主題發送消息,如上所述。
JMS 消費者或訂閱者:它表示兩種類型的 JMS 客戶端,它們使用消息隊列或主題接收消息,如上所述。
JMS 應用程序:托管一個 JMS 提供者和許多 JMS 客戶端的 JMS 應用程序。
ActiveMQ 服務器
有許多可用的 MQ 服務器實現,例如 IBM MQ、RabbitMQ、Apache ActiveMQ 等。 在這里,我們將主要關注 ActiveMQ,因為它很流行、開源、免費并且是用 Java 編寫的。 ActiveMQ 支持許多跨語言客戶端和協議,例如 C、C++、C#、Ruby、Perl、Python、PHP,當然還有 Java。 ActiveMQ 可以很容易地嵌入到 Spring 應用程序中,并且 Spring BOOT 支持為它提供了一個現成的啟動器。
它是如何工作的?
生產者連接到 MQ 服務器并開始向隊列或主題發送消息。 消費者連接到服務器并開始從隊列或感興趣的主題接收消息。 從使用 API 的角度來看,它們都是相同的。 從 JMS 1.1 開始,API 已經統一,在處理隊列或主題時沒有區別。對Java 感興趣的同學可以報名參加java培訓,有經驗豐富的專業講師指導教學,可以讓你快速掌握這門技術,節約時間,少走彎路。