[
http://jira.jboss.com/jira/browse/JBESB-1460?page=all ]
Kevin Conner reassigned JBESB-1460:
-----------------------------------
Assignee: Kevin Conner (was: Mark Little)
Tim Fox has pointed out part of the activation spec whereby we can override the provider
and specify the remote location of queues/topics.
This needs a small code change to support.
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: Kevin Conner
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:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira