我拦截通过JBossESB发送的消息。我正在使用管道拦截器这样做。
问题是,尽管发件人是服务(例如 PortReference< logical:BlueServiceESB#BlueListener> ),但接收者的名称是队列(不是服务)。这是合乎逻辑的,因为在某些情况下,多个服务可以从给定队列接收消息,但通常,每个队列只映射到一个服务。
我想知道哪个队列映射到哪个服务,因此我可以显示/保存此信息,并将其显示为 message:service --->服务(不是服务--->队列)。
我知道我可以使用注册表获取映射到服务的队列名称,如下所示:
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 :(得分:1)
由于这个问题有25个投票,这似乎是一个有用的功能。 JBossESB是开源软件。因此,您自己实现该功能并将其提交给社区!或者只是创建一个变更请求跳跃,其他人会这样做...
答案 1 :(得分:0)
尝试查询所有队列并构建反向查找映射。但我认为没有任何功能允许使用队列搜索服务。