[esb-issues] [JBoss JIRA] Created: (JBESB-1460) jms-jca-provider doesn't read from queues on different node
Martin Vecera (JIRA)
jira-events at lists.jboss.org
Thu Jan 10 03:39:43 EST 2008
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: Adapters, Rosetta
Affects Versions: 4.2.1
Environment: 2x RHEL5, SOA-P 4.2.0 beta 1, Oracle 10g
Reporter: Martin Vecera
Priority: Blocker
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: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the esb-issues
mailing list