我正在攔截通過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 =結束點引用=服務)是輸出。有沒有辦法如何做到這一點,或者我只是想在這裏做不可能的事情。我沒有發現任何有關這個主題的教程或問題。
感謝您的任何提示!
我不熟悉JBoss ESB EPR數據結構,但會查詢所有隊列並構建反向查找映射作爲選項爲你? – Alex
不幸的是,沒有這樣的函數可以使用隊列名稱來搜索服務:-( – Smajl