2013-06-05 72 views
1

我已經獲得了一些有關使用發佈到資源的消息的知識。在這個過程中,我使用了一個獨立的消息發送到本地隊列。現在,任務是將消息發佈到駐留在服務器(比如TIBCO)的遠程隊列中,而不是Web-Logic,我在此使用它。使用Web-Logic將消息發佈到遠程隊列

我的問題是: a)在發佈到遠程隊列時,是否有任何顯着差異需要注意?

+0

隊列位置基於經紀人,而不是生產者或消費者。如果代理的地址是'localhost',則隊列是本地的,如果是別的,它是遠程的。 – raffian

+0

thanku。我一直在使用Web邏輯,從來沒有機會明確地與經紀人打交道。但我的問題是將消息發佈到位於不同服務器上的資源。 – maryJane

+0

您想接受答案嗎?或者讓我們知道這是不是您正在尋找的答案?或者至少在解決問題時與我們分享解決方案。恕我直言,這是粗魯的不承認,如果你從社區接受一些幫助。 – Raza

回答

0

你想實現什麼? 如果你只是想發佈消息到任何兼容JMS經紀人隊列我會給一個嘗試愛馬仕工具:http://www.hermesjms.com/confluence/display/HJMS/Home

乾杯

+0

我的意思是一個坐在不同的應用服務器上的遠程隊列。我發現我必須繼續的選項,如消息橋等。很多謝謝! – maryJane

0

發送消息到遠程服務器是非常簡單的。您所需要的只是遠程服務器的URL和JMS提供程序正在偵聽傳入連接的端口號。一旦你有這些細節,然後你做一個隊列的JNDI查找,並建立一個會話發送消息。如下所示:

// Provide the details of remote JMS Server 
Properties props = new Properties(); 
props.put(Context.PROVIDER_URL, "mq://localhost:7676"); 

// Create the initial context for remote JMS server 
InitialContext cntxt = new InitialContext(props); 
System.out.println("Context Created"); 

// JNDI Lookup for QueueConnectionFactory in remote JMS Provider 
QueueConnectionFactory qFactory = (QueueConnectionFactory)cntxt.lookup("TestQueueConnectionFactory"); 

// Create a Connection from QueueConnectionFactory 
Connection connection = qFactory.createConnection(); 
System.out.println("Connection established with JMS Provide "); 

有關完整的代碼詳細信息,請參見此JMS Client Server Example。我猜你只對這個例子中的客戶端代碼感興趣。

+0

感謝您的回覆。但是,當我指出,作爲「顯着差異」,我的意思是,需要照顧的額外點。是的,在我的研究中,我發現取決於遠程目標的可用性,消息橋接是更好的選擇。 – maryJane

+0

如果我的回覆爲時已晚,我很抱歉,我不是SO的常規用戶,每當我找到時間時都會盡力幫助。您可能已經想通了,但答案是**在處理本地或遠程隊列**方面沒有區別。它將只是不同的URL,對於本地它將是本地主機,對於遠程它將是代理正在運行的服務器的名稱。但是,所有其他的固有問題都存在,例如與任何遠程服務器通信時常見的安全性,可靠性等。 – Raza

+0

您並不需要消息橋來建立JMS客戶端和提供者之間的通信。消息橋更適用於要在兩個通道(即服務器)之間建立通信機制的情況。例如,當你想發送消息到多個服務器(而不是客戶端)時。另一個原因可能是你想要實現一些客戶預處理,即使用橋作爲攔截器。如果你只是想建立消息提供者/消費者關係,那麼就沒有必要爲你的系統增加更多的複雜性。 – Raza

相關問題