Loading AI tools
来自维基百科,自由的百科全书
Java消息服務(Java Message Service,JMS)應用程序接口是一個Java平台中關於面向消息中間件(MOM)的API,用於在兩個應用程序之間,或分布式系統中發送消息,進行異步通信。Java消息服務是一個與具體平台無關的API,絕大多數MOM提供商都對JMS提供支持。
Java消息服務的規範包括兩種消息模式,點對點和發布者/訂閱者。許多提供商支持這一通用框架因此,程序員可以在他們的分布式軟件中實現面向消息的操作,這些操作將具有不同面向消息中間件產品的可移植性。
Java消息服務支持同步和異步的消息處理,在某些場景下,同步消息是必要的;在其他場景下,異步消息比同步消息操作更加便利。
Java消息服務支持面向事件的方法接收消息,事件驅動的程序設計現在被廣泛認為是一種富有成效的程序設計範例,程序員們都相當熟悉。
在應用系統開發時,Java消息服務可以推遲選擇面對消息中間件產品,也可以在不同的面對消息中間件切換。
Java消息服務是一個在 Java標準化組織(JCP)內開發的標準(代號JSR 914)。2001年6月25日,Java消息服務發布JMS 1.0.2b,2002年3月18日Java消息服務發布 1.1,統一了消息域。
JMS由以下元素組成。
Java消息服務應用程序結構支持兩種模型:
在點對點或隊列模型下,一個生產者向一個特定的隊列發布消息,一個消費者從該隊列中讀取消息。這裡,生產者知道消費者的隊列,並直接將消息發送到消費者的隊列。這種模式被概括為:
發布者/訂閱者模型支持向一個特定的消息主題發布消息。0或多個訂閱者可能對接收來自特定消息主題的消息感興趣。在這種模型下,發布者和訂閱者彼此不知道對方。這種模式好比是匿名公告板。這種模式被概括為:
使用Java語言,JMS提供了將應用與提供數據的傳輸層相分離的方式。同一組Java類可以通過JNDI中關於提供者的信息,連接不同的JMS提供者。這一組類首先使用一個連接工廠以連接到隊列或主題,然後發送或發布消息。在接收端,客戶接收或訂閱這些消息。
Java消息服務的API在javax.jms
包中提供。
用戶用來創建到JMS提供者的連接的被管對象。JMS客戶通過可移植的接口訪問連接,這樣當下層的實現改變時,代碼不需要進行修改。 管理員在JNDI名字空間中配置連接工廠,這樣,JMS客戶才能夠查找到它們。根據消息類型的不同,用戶將使用隊列連接工廠,或者主題連接工廠。
連接代表了應用程序和消息服務器之間的通信鏈路。在獲得了連接工廠後,就可以創建一個與JMS提供者的連接。根據不同的連接類型,連接允許用戶創建會話,以發送和接收隊列和主題到目標。
目標是一個包裝了消息目標標識符的被管對象,消息目標是指消息發布和接收的地點,或者是隊列,或者是主題。JMS管理員創建這些對象,然後用戶通過JNDI發現它們。和連接工廠一樣,管理員可以創建兩種類型的目標,點對點模型的隊列,以及發布者/訂閱者模型的主題。
由會話創建的對象,用於接收發送到目標的消息。消費者可以同步地(阻塞模式),或異步(非阻塞)接收隊列和主題類型的消息。
由會話創建的對象,用於發送消息到目標。用戶可以創建某個目標的發送者,也可以創建一個通用的發送者,在發送消息時指定目標。
是在消費者和生產者之間傳送的對象,也就是說從一個應用程序創送到另一個應用程序。一個消息有三個主要部分:
消息接口非常靈活,並提供了許多方式來定製消息的內容。
表示一個單線程的上下文,用於發送和接收消息。由於會話是單線程的,所以消息是連續的,就是說消息是按照發送的順序一個一個接收的。會話的好處是它支持事務。如果用戶選擇了事務支持,會話上下文將保存一組消息,直到事務被提交才發送這些消息。在提交事務之前,用戶可以使用回滾操作取消這些消息。一個會話允許用戶創建消息生產者來發送消息,創建消息消費者來接收消息。
要使用Java消息服務,你必須要有一個JMS提供者,管理會話和隊列。現在既有開源的提供者也有專有的提供者。
開源的提供者包括:
專有的提供者包括:
一個詳盡的JMS提供者對比矩陣可以在這裡 (頁面存檔備份,存於網際網路檔案館)看到。
如果你計劃在一個服務器集群中運行你的程序,你需要檢查提供者是否實現了對負載均衡和故障恢復的支持。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.