JBoss SOA/ESB multi-queue performance
heyyou Apr 25, 2011 11:56 AMJBoss AS 5.1
JBoss SOA 5.0.2
JBoss Messaging 1.4.7
Is there a recommended configuration for supporting multiple JMS queue routing?
At the moment, I just want to test a simple routing configuration that simply routes all JMS messagings from 10 inbound queues to 10
outbound queues :
InboundQueue1 -> OutboundQueue1
InboundQueue2 -> OutboundQueue2
...
InboundQueue10 -> OutboundQueue10
I'm tried four different techniques:
Syntax #1: Single ESB + multiple inbound queues + multiple services (using invmScope)
1. Define each inbound queue in the <providers>..</providers> section
2. Create a <service> definition for each inbound/outbound pair of queues
- Use 'invmScope="GLOBAL"' in my "<service .." declaration for each service
- Use "org.jboss.soa.esb.actions.routing.JMSRouter" to route messages to corresponding outbound queue
Syntax #2: Single ESB + multiple inbound queues + multiple services (using internal queue)
1. Define each inbound and "internal" queue (for each inbound queue) in the <providers>..</providers> section
2. Create a <service> definition for each inbound/outbound pair of queues
- Use 'internal" queue to route messages between inbound and outbound queues
- Use "org.jboss.soa.esb.actions.routing.JMSRouter" to route messages to corresponding outbound queue
Syntax #3: Multiple ESB with single inbound queue + invmScope
Create 10 separate ESB configurations for each pair of inbound/outbound queues and use invmScope
Syntax #4: Multiple ESB with single inbound queue + internal queue
Create 10 separate ESB configurations for each pair of inbound/outbound queues and use the "internal" queue.
I can not do any better than 205 messages per second. If I just send messages to 5 of inbound
queues ( thus routing to only 5 outbound ), the best rate is about 104 messages per second. If I send to
a single inbound queue, the best I can get 880 msg/second. All of which are extremely low performance.
This is a very simple example of just passthru messages.
If I define the 10 queues in JBossMessaging and just write/read for the 10 inbound queues ( since there
isn't any routing), the message rate is in the thousands. So JBoss ESB is definitely throttling back
JBossMessaging.
I've include the jboss-esb.xml configuration files used for the first two scenarios above.
Is there a better method of defining multiple JMS queue configuration using JBoss ESB?
-
invm-jboss-esb.xml 12.5 KB
-
internal-jboss-esb.xml 13.0 KB