我不是JMS的專家,最近遇到了我的項目中他們想使用JMS在應用程序之間進行通信的情況。是否有可能使用JMS而不使用諸如Websphere MQ/TIBCO EMS等基礎MQ軟件異步通信。我的想法就像我們使用JDBC API與底層的物理數據庫產品(如Oracle/DB2 DB)對話,我們將使用JMS與物理隊列通話。但是我的團隊只是說JMS而不是隊列。任何人都可以幫助我理解?我們使用Websphere 6.0服務器並使用spring框架。沒有隊列的JMS
在此先感謝。
我不是JMS的專家,最近遇到了我的項目中他們想使用JMS在應用程序之間進行通信的情況。是否有可能使用JMS而不使用諸如Websphere MQ/TIBCO EMS等基礎MQ軟件異步通信。我的想法就像我們使用JDBC API與底層的物理數據庫產品(如Oracle/DB2 DB)對話,我們將使用JMS與物理隊列通話。但是我的團隊只是說JMS而不是隊列。任何人都可以幫助我理解?我們使用Websphere 6.0服務器並使用spring框架。沒有隊列的JMS
在此先感謝。
你是對的:JMS只是一個接口,它不包含任何實現。與JDBC的比較非常合適。
使用JMS時,您總是需要一個JMS提供程序。一個提供者是JMS實現,它接口一個面向消息的中間件。
大多數應用程序服務器都內置了JMS提供程序,因此也許您的團隊意味着使用JMS而無需外部提供程序。
是否有可能使用JMS的沒有底層MQ軟件如WebSphere MQ/TIBCO EMS進行異步通信
這是沒有意義的。幾點要注意 -
我的想法是,就像我們使用JDBC API講一個物理數據庫產品(如Oracle/DB2 DB)下方,我們將使用JMS說話的物理隊列。但我的團隊說只是JMS,並沒有隊列
這裏需要注意兩點。當你說你想使用數據庫和JDBC API進行通信時,JMS就不會出現在圖片的什麼地方。請理解爲什麼使用JMS。簡而言之,它用於在兩個解耦系統之間傳輸消息。 JMS服務器使用的存儲類型(以及是否可配置)將取決於提供商。一般都有數據庫存儲類型,可以配置爲使用您的數據庫。
下一步JMS有兩種類型的通訊 - PTP(peer to peer)
,它使用queues
和PUBSUB(publish subscribe)
,它使用Topics
。當你說你正在使用JMS時,一切都歸結爲這兩者中的任何一個以及它們的一些變體。現在當你說沒有隊列的JMS時,也許你的團隊意味着使用PUBSUB。但是,這又不是你隨意決定的,並將其用於你的應用程序中。這個決定取決於你的要求,因爲它們的行爲都不一樣。
首先您需要隊列/主題才能使用JMS。
二(你的團隊可能意味着不使用WebSphere MQ,因爲我的團隊說同樣的事情)
此圖在IBM的紅皮書將完全回答你的問題(這是一樣的WS6):
http://www.redbooks.ibm.com/redbooks/pdfs/sg247770.pdf 頁4.
也許你會用什麼在WebSphere缺省消息傳遞提供。
Websphere Application Server具有內部隊列(他們將它命名爲默認隊列),並且它們有自己的JMS實現(甚至不是相同的Websphere MQ的JMS實現)。也許你的團隊正在計劃使用它,所以有專用的MQ服務器。 –