2014-03-13 274 views
0

我不是JMS的專家,最近遇到了我的項目中他們想使用JMS在應用程序之間進行通信的情況。是否有可能使用JMS而不使用諸如Websphere MQ/TIBCO EMS等基礎MQ軟件異步通信。我的想法就像我們使用JDBC API與底層的物理數據庫產品(如Oracle/DB2 DB)對話,我們將使用JMS與物理隊列通話。但是我的團隊只是說JMS而不是隊列。任何人都可以幫助我理解?我們使用Websphere 6.0服務器並使用spring框架。沒有隊列的JMS

在此先感謝。

+1

Websphere Application Server具有內部隊列(他們將它命名爲默認隊列),並且它們有自己的JMS實現(甚至不是相同的Websphere MQ的JMS實現)。也許你的團隊正在計劃使用它,所以有專用的MQ服務器。 –

回答

2

你是對的:JMS只是一個接口,它不包含任何實現。與JDBC的比較非常合適。

使用JMS時,您總是需要一個JMS提供程序。一個提供者是JMS實現,它接口一個面向消息的中間件。

大多數應用程序服務器都內置了JMS提供程序,因此也許您的團隊意味着使用JMS而無需外部提供程序。

1

是否有可能使用JMS的沒有底層MQ軟件如WebSphere MQ/TIBCO EMS進行異步通信

這是沒有意義的。幾點要注意 -

  1. JMS只是specs。根據規範,您可以將其想象爲一組API /接口/方法簽名和管理規則。
  2. 有各種組織/公司提供這些API的實現.Apache的ActiveMQ,IBM的Websphere MQ或TIBCO EMS是一些示例。
  3. 現在當你說我想使用JMS時,你需要一個兼容JMS的服務器,即理解規範規定的規則的服務器。這通常稱爲MQ服務器,由提供者提供。

我的想法是,就像我們使用JDBC API講一個物理數據庫產品(如Oracle/DB2 DB)下方,我們將使用JMS說話的物理隊列。但我的團隊說只是JMS,並沒有隊列

這裏需要注意兩點。當你說你想使用數據庫和JDBC API進行通信時,JMS就不會出現在圖片的什麼地方。請理解爲什麼使用JMS。簡而言之,它用於在兩個解耦系統之間傳輸消息。 JMS服務器使用的存儲類型(以及是否可配置)將取決於提供商。一般都有數據庫存儲類型,可以配置爲使用您的數據庫。

下一步JMS有兩種類型的通訊 - PTP(peer to peer),它使用queuesPUBSUB(publish subscribe),它使用Topics。當你說你正在使用JMS時,一切都歸結爲這兩者中的任何一個以及它們的一些變體。現在當你說沒有隊列的JMS時,也許你的團隊意味着使用PUBSUB。但是,這又不是你隨意決定的,並將其用於你的應用程序中。這個決定取決於你的要求,因爲它們的行爲都不一樣。

0

首先您需要隊列/主題才能使用JMS。

二(你的團隊可能意味着不使用WebSphere MQ,因爲我的團隊說同樣的事情)

此圖在IBM的紅皮書將完全回答你的問題(這是一樣的WS6):

http://www.redbooks.ibm.com/redbooks/pdfs/sg247770.pdf 頁4.

JMS Provider Components

也許你會用什麼在WebSphere缺省消息傳遞提供。