2013-07-22 52 views
25

我正在攔截通過JBossESB發送的消息。我正在使用管道攔截器來執行此操作。JBossESB - 隊列到服務映射

的問題是,即altough發件人是服務(例如PortReference <邏輯:BlueServiceESB#BlueListener>),接收器的名稱是一個隊列(不是服務)。這是合乎邏輯的,因爲在某些情況下,多個服務可以接收來自給定隊列的消息,但通常每個隊列僅映射到一個服務。

我想知道哪個隊列映射到哪個服務,所以我可以顯示/保存這些信息並顯示如message:service ---> service(not service ---> queue)。

我知道,我能得到像這樣使用註冊表映射到服務隊列的名稱:

System.setProperty("javax.xml.registry.ConnectionFactoryClass", "org.apache.ws.scout.registry.ConnectionFactoryImpl"); 

// Retrieving information from the ESB Registry 
Registry reg = RegistryFactory.getRegistry(); 
System.out.println(reg.findAllServices()); 
List<EPR> eprs = reg.findEPRs("FirstServiceESB", "SimpleListener"); 
System.out.println(eprs); 

我想扭轉這種方法 - 隊列是輸入和服務(EPR =結束點引用=服務)是輸出。有沒有辦法如何做到這一點,或者我只是想在這裏做不可能的事情。我沒有發現任何有關這個主題的教程或問題。

感謝您的任何提示!

+0

我不熟悉JBoss ESB EPR數據結構,但會查詢所有隊列並構建反向查找映射作爲選項爲你? – Alex

+0

不幸的是,沒有這樣的函數可以使用隊列名稱來搜索服務:-( – Smajl

回答

0

嘗試查詢所有隊列並構建反向查找映射。但我不認爲有任何功能允許使用隊列搜索服務。

1

由於這個問題有25票,這似乎是一個有用的功能。 JBossESB是開源軟件。因此,自己實現該功能並將其提交給社區!或者只是創建一個更改請求跳躍,其他人會這樣做...