一、什么是JAVA的消息服務
上文中我們提到Java消息服務指的是兩個應用程序之間進行異步通信的API,它為標准消息協議和消息服務提供了一組通用接口,包括創建、發送、讀取消息等,用於支持JAVA應用程序開發。在J2EE中,當兩個應用程序使用JMS進行通信時,它們之間並不是直接相連的,而是通過一個共同的消息收發服務連接起來,可以達到解耦的效果。
二、為什么要使用JMS
在JAVA中,如果兩個應用程序之間對各自都不了解,甚至這兩個程序可能部署在不同的大洲上,那么它們之間如何發送消息呢?舉個例子,一個應用程序A部署在印度,另一個應用程序部署在美國,然后每當A觸發某件事后,B想從A獲取一些更新信息。當然,也有可能不止一個B對A的更新信息感興趣,可能會有N個類似B的應用程序想從A中獲取更新的信息。 在這種情況下,JAVA提供了最佳的解決方案-JMS,完美解決了上面討論的問題。JMS同樣適用於基於事件的應用程序,如聊天服務,它需要一種發布事件機制向所有與服務器連接的客戶端發送消息。JMS與RMI不同,發送消息的時候,接收者不需要在線。服務器發送了消息,然后就不管了;等到客戶端上線的時候,能保證接收到服務器發送的消息。這是一個很強大的解決方案,能處理當今世界很多普遍問題。
1、松散耦合但是高內聚。使用消息服務的客戶機不需要實現通用接口,不需要了解對方。消息服務提供了標准接口。
2、不直接通信。客戶機不直接對話,而通過中間媒介,消息服務扮演 緩沖區,並提供 安全控制。
3、保證消息傳遞。 JMS的提供者保持消息持久,直到客戶機接受為止。
4、異步通信。
5、一對多、多對多和多對一通信。
JMS(Java 消息服務)是一組標准的API,能夠用於訪問多種消息服務器。使用JMS,可以使用一樣的API訪問IBM的MQSeries、JBossMQ等消息服務。
三、JMS消息服務的優勢
1、異步
JMS天生就是異步的,客戶端獲取消息的時候,不需要主動發送請求,消息會自動發送給可用的客戶端。
2、可靠
JMS保證消息只會遞送一次。大家都遇到過重復創建消息問題,而JMS能幫你避免該問題。
在JMS API出現之前,大部分產品使用“點對點”和“發布/訂閱”中的任一方式來進行消息通訊。JMS定義了這兩種消息發送模型的規范,它們相互獨立。任何JMS的提供者可以實現其中的一種或兩種模型,這是它們自己的選擇。JMS規范提供了通用接口保證我們基於JMS API編寫的程序適用於任何一種模型。