Ich habe mehrere Dienste in jboss-esb.xml konfiguriert, wenn ich eine Nachricht an einen der Dienste sende, wird meine Nachricht von einem der konfigurierten Dienste empfangen (obwohl die Nachricht ist nicht für diesen Service gedacht)!JBoss ESB Nachricht wird vom falschen Dienst empfangen
Wenn ich die gleiche Nachricht noch einmal sende, wird ein anderer Dienst diese Nachricht verarbeiten (in Round-Robin-Manier), es ist nicht zufällig, es ist wie jeder Dienst abzufangen, um die Nachricht abzufangen.
Beispiel, wenn ich 3 Dienste konfiguriert habe. Das erste Mal, dass ich eine Nachricht sende, wird Dienst 1 es empfangen, das zweite Mal, dass ich eine Nachricht sende, wird Dienst 2 es empfangen, das dritte Mal, dass ich die Nachricht sende, wird Dienst 3 es empfangen. Das vierte Mal, dass ich es sende, wird Service 1 es erhalten und der Zyklus wiederholen.
Ich vermute, dass etwas mit der Art falsch ist, wie ich meine jboss-esb.xml konfiguriert habe, aber ich bin ahnungslos.
Hier ist, wie ich den Dienst aufrufen,
ServiceInvoker invoker = new ServiceInvoker("NTIAdaptor", "SearchAccountByParentInternalId");
Message replyMessage = invoker.deliverSync(requestMessage, TIMEOUT);
Und hier ist der 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>
Aber wenn mein JMS so konfiguriert ist, dass es die Nachrichten an alle Dienste, die es hören, veröffentlicht, würden dann alle Nachrichten nicht alle Dienste erreichen? Muss ich in diesem Fall auch andere JMS konfigurieren? – Vishal