Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JBoss ESB消息由错误的服务接收_Jboss_Jms_Esb_Jboss Messaging_Jboss Esb - Fatal编程技术网

JBoss ESB消息由错误的服务接收

JBoss ESB消息由错误的服务接收,jboss,jms,esb,jboss-messaging,jboss-esb,Jboss,Jms,Esb,Jboss Messaging,Jboss Esb,我在jboss-esb.xml中配置了几个服务,当我向其中一个服务发送消息时,我的消息将被其中一个配置的服务接收(即使消息不是针对该服务的) 如果我再次发送相同的消息,另一个服务将处理该消息(在循环maner中),它不是随机的,就像每个服务轮流拦截消息一样 例如,如果我配置了3个服务。第一次发送消息时,服务1将接收消息,第二次发送消息时,服务2将接收消息,第三次发送消息时,服务3将接收消息。我第四次发送它时,服务1将收到它并重复该循环 我怀疑我配置jboss-esb.xml的方式有问题,但我对此

我在jboss-esb.xml中配置了几个服务,当我向其中一个服务发送消息时,我的消息将被其中一个配置的服务接收(即使消息不是针对该服务的)

如果我再次发送相同的消息,另一个服务将处理该消息(在循环maner中),它不是随机的,就像每个服务轮流拦截消息一样

例如,如果我配置了3个服务。第一次发送消息时,服务1将接收消息,第二次发送消息时,服务2将接收消息,第三次发送消息时,服务3将接收消息。我第四次发送它时,服务1将收到它并重复该循环

我怀疑我配置jboss-esb.xml的方式有问题,但我对此一无所知

下面是我调用服务的方式

ServiceInvoker invoker = new ServiceInvoker("NTIAdaptor", "SearchAccountByParentInternalId");
Message replyMessage = invoker.deliverSync(requestMessage, TIMEOUT);
这里是jboss-esb.xml

<?xml version="1.0"?>
<jbossesb parameterReloadSecs="5"
 xmlns="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd http://anonsvn.jboss.org/repos/labs/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd">
 <providers>
  <jms-provider connection-factory="ConnectionFactory" name="JMS Provider">
   <jms-bus busid="NTI">
    <jms-message-filter dest-name="queue/NTIAdaptor" dest-type="QUEUE"/>
   </jms-bus>
  </jms-provider>
 </providers>
 <services>  
  <service category="NTIAdaptor"
   description="SearchAccountByExternalId" name="SearchAccountByExternalId">
   <listeners>
    <jms-listener busidref="NTI" name="JMS"/>
   </listeners>
   <actions mep="RequestResponse" webservice="true">
    <action class="com.krona.esb.action.AuthenticateAction" name="authenticate"/>
    <action class="com.krona.esb.action.LogAction" name="logStart"/>
    <action
     class="com.krona.esb.account.action.SearchAccountByExternalIdAction"
     name="process" process="process"/>
    <action class="com.krona.esb.action.LogAction" name="logEnd"/>
   </actions>
  </service>
  <service category="NTIAdaptor"
   description="SearchAccountByInternalId" name="SearchAccountByInternalId">
   <listeners>
    <jms-listener busidref="NTI" name="JMS"/>
   </listeners>
   <actions mep="RequestResponse" webservice="true">
    <action class="com.krona.esb.action.AuthenticateAction" name="authenticate"/>
    <action class="com.krona.esb.action.LogAction" name="logStart"/>
    <action
     class="com.krona.esb.account.action.SearchAccountByInternalIdAction"
     name="process" process="process"/>
    <action class="com.krona.esb.action.LogAction" name="logEnd"/>
   </actions>
  </service>
  <service category="NTIAdaptor"
   description="SearchAccountByParentInternalId" name="SearchAccountByParentInternalId">
   <listeners>
    <jms-listener busidref="NTI" name="JMS"/>
   </listeners>
   <actions mep="RequestResponse" webservice="true">
    <action class="com.krona.esb.action.AuthenticateAction" name="authenticate"/>
    <action class="com.krona.esb.action.LogAction" name="logStart"/>
    <action
     class="com.krona.esb.account.action.SearchAccountByParentInternalIdAction"
     name="process" process="process"/>
    <action class="com.krona.esb.action.LogAction" name="logEnd"/>
   </actions>
  </service>
  <service category="NTIAdaptor"
   description="SearchAccountByServiceExternalId" name="SearchAccountByServiceExternalId">
   <listeners>
    <jms-listener busidref="NTI" name="JMS"/>
   </listeners>
   <actions mep="RequestResponse" webservice="true">
    <action class="com.krona.esb.action.AuthenticateAction" name="authenticate"/>
    <action class="com.krona.esb.action.LogAction" name="logStart"/>
    <action
     class="com.krona.esb.account.action.SearchAccountByServiceExternalIdAction"
     name="process" process="process"/>
    <action class="com.krona.esb.action.LogAction" name="logEnd"/>
   </actions>
  </service>
 </services>
</jbossesb>


您遇到了这个问题,因为您正在跨服务使用相同的jms总线。尝试为每个服务jms侦听器使用不同的jms总线。

如果不是Manuel所说的,我们也遇到了与您类似的问题,消息到达了错误的服务。
在我们的例子中,当我们将侦听器从一个服务更改为另一个服务时,juddi寄存器没有更改。因此,我们以侦听同一队列的两个服务结束。

但是,如果我的JMS配置为将消息发布到侦听它的所有服务,那么是否所有MSG都会到达而不是所有服务?在这种情况下,我是否也需要配置不同的JMS?