[
http://jira.jboss.com/jira/browse/JBESB-1460?page=all ]
Kevin Conner reassigned JBESB-1460:
-----------------------------------
Assignee: Mark Little (was: Kevin Conner)
There is too much involved for us to support this within ESB, we need to document the
restrictions for now.
Assigning to Mark to chase up with EAP.
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.2.1 CP1
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