]
Mark Little updated JBESB-1460:
-------------------------------
Fix Version/s: 4.3
(was: 4.2.1 CP1)
jms-jca-provider doesn't read from queues on different node
-----------------------------------------------------------
Key: JBESB-1460
URL:
http://jira.jboss.com/jira/browse/JBESB-1460
Project: JBoss ESB
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: Rosetta, Adapters
Affects Versions: 4.2.1
Environment: 2x RHEL5, SOA-P 4.2.0 beta 1, Oracle 10g
Reporter: Martin Vecera
Assigned To: Mark Little
Priority: Blocker
Fix For: 4.3
While I was trying ESB load balancing and failover I found out the following issue...
Scenario:
1. Two nodes (hostnames: jawa02, jawa04), sharing the same DB, different ServerPeerIDs
but no JMS clustering.
2. I generated a message backlog on jawa02 queue/A (10,000 messages).
3. See my simple service configuration:
<providers>
<jms-jca-provider name="JBossMessaging"
connection-factory="XAConnectionFactory"
jndi-URL="jnp://jawa02:1099"
jndi-context-factory="org.jnp.interfaces.NamingContextFactory"
jndi-pkg-prefix="org.jboss.naming:org.jnp.interfaces"
transacted="false">
<jms-bus busid="quickstartGwChannel">
<jms-message-filter dest-type="QUEUE" dest-name="queue/A"
/>
</jms-bus>
</jms-jca-provider>
<jms-jca-provider name="JBossMessaging"
connection-factory="XAConnectionFactory"
jndi-URL="jnp://jawa04:1099"
jndi-context-factory="org.jnp.interfaces.NamingContextFactory"
jndi-pkg-prefix="org.jboss.naming:org.jnp.interfaces"
transacted="false">
<jms-bus busid="quickstartEsbChannel">
<jms-message-filter dest-type="QUEUE" dest-name="queue/C"
/>
</jms-bus>
</jms-jca-provider>
</providers>
<services>
<service category="FirstServiceESB" name="SimpleListener"
description="Hello World">
<listeners>
<jms-listener name="ESB-Gateway"
busidref="quickstartGwChannel" maxThreads="4"
is-gateway="true" />
<jms-listener name="helloWorld"
busidref="quickstartEsbChannel" maxThreads="4" />
</listeners>
<actions mep="OneWay">
<action name="notificationAction"
class="org.jboss.soa.esb.actions.Notifier">
<property name="okMethod" value="notifyOK" />
<property name="notification-details">
<NotificationList type="OK">
<target class="NotifyConsole" />
</NotificationList>
</property>
</action>
</actions>
</service>
</services>
4. I deployed the described service to jawa04 and expected it to start processing the
messages from jawa02 queue/A but this didn't happen.
5. When I changed the GW provider from jms-jca-provider to jms-provider:
<jms-provider name="JBossMessaging"
connection-factory="XAConnectionFactory"
jndi-URL="jnp://jawa02:1099"
jndi-context-factory="org.jnp.interfaces.NamingContextFactory"
jndi-pkg-prefix="org.jboss.naming:org.jnp.interfaces">
It worked as expected.
Unfortunatelly jms-provider doesn't use ServiceInvoker and thus no load
balancing/failover is possible.
This makes the ESB failover impossible using JMS.
Solution:
1) make jms-jca-provider read the messages from different nodes in the way jms-provider
does it.
or 2) make jms-provider use ServiceInvoker
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: