[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