You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by Pieter Delmee <in...@rocadel.nl> on 2007/10/15 12:37:57 UTC
sendSync hangs on eip
I have a configuration that works for a single message. It even works
for about 3 messages at a time, but when I increase the load to 10
messages it just stops without any errors. The flow is composed of the
following endpoints:
1. dequeue: JMS dequeuer sends received messages to process
2. process: EIP pipeline transforms received messages in routingslip and
sends the result to persist (replaced with outbox directory for testing)
3. routingslip: EIP static routing slip is composed of 2 XSLT
transformers address and enhance-description (disabled for testing)
4. address: saxon derived XSLT transformer. Replaces the source resolver
of the transformer.
5. enhance-description: similar to address but uses another xslt.
6. persist: stores the message using EJB3 (not used in test)
Attached is a PDF overview of the message id's as they are processed by
each endpoint. The persist has been replaced by a file outbox, but that
makes no difference. The enhance-description has also been disabled (no
difference).
When I inspect the eip-component using the JConsole it always has a size
of 10 after failing (capacity is 256). I don't know if that means
anything though.
I'm a bit of a newby to servicemix, so if anybody could tell me how to
solve this I'd be a happy man.
Currently the dequeue endpoint is synchronous, but I'd like to make it
async if possible. But when I set synchronous="false", the messages are
no longer sent to the process endpoint. The only diffence I see in the
log is that in sync mode it uses the SedaFlow and in async mode it uses
JCAFlow. I don't know what I need to change to make it work async.
dequeue unit
<beans xmlns:jms="http://servicemix.apache.org/jms/1.0"
xmlns:ci="http://xxx/connector_inbound/1.0"
xmlns:amqra="http://activemq.org/ra/1.0"
xmlns:amqpool="http://jencks.org/amqpool/2.0"
xmlns:jencks="http://jencks.org/2.0">
<jms:endpoint service="ci:xxx-dequeue"
endpoint="endpoint" role="consumer" processorName="jca"
targetService="ci:xxx-process"
bootstrapContext="#bootstrapContext"
resourceAdapter="#activeMQResourceAdapter"
connectionFactory="#jmsFactory"
defaultMep="http://www.w3.org/2004/08/wsdl/in-only"
rollbackOnError="true" synchronous="true">
<jms:activationSpec>
<amqra:activationSpec destination="xxx-inbound"
destinationType="javax.jms.Queue"/>
</jms:activationSpec>
</jms:endpoint>
<!-- Transaction Manager -->
<jencks:transactionManager id="transactionManager"
defaultTransactionTimeoutSeconds="600"/>
<!-- Work manager -->
<jencks:workManager id="workManager" threadPoolSize="200"
transactionManager="#transactionManager" />
<!-- Bootstrap context for JCA -->
<jencks:bootstrapContext id="bootstrapContext"
workManager="#workManager"
transactionManager="#transactionManager" />
<!-- the JCA Resource Adapter -->
<amqra:resourceAdapter id="activeMQResourceAdapter"
serverUrl="tcp://localhost:61616?jms.asyncDispatch=true&jms.useAsyncSend=true&jms.redeliveryPolicy.maximumRedeliveries=10&jms.redeliveryPolicy.initialRedeliveryDelay=100L&jms.redeliveryPolicy.useExponentialBackOff=true&jms.redeliveryPolicy.backOffMultiplier=5"
/>
<!-- JMS Xa-enabled pooled factory -->
<amqpool:jcaPooledConnectionFactory name="jmsFactory"
transactionManager="#transactionManager" maxConnections="10"
brokerURL="tcp://localhost:61616?jms.asyncDispatch=true&jms.useAsyncSend=true&jms.redeliveryPolicy.maximumRedeliveries=10&jms.redeliveryPolicy.initialRedeliveryDelay=100L&jms.redeliveryPolicy.useExponentialBackOff=true&jms.redeliveryPolicy.backOffMultiplier=5"
/>
</beans>
process unit:
<beans xmlns:eip="http://servicemix.apache.org/eip/1.0"
xmlns:ci="http://xxx/connector_inbound/1.0"
xmlns:test="http://xxx/test/1.0">
<eip:pipeline service="ci:xxx-process"
endpoint="endpoint">
<eip:transformer>
<eip:exchange-target
service="ci:xxx-routingslip" />
</eip:transformer>
<eip:target>
<!-- store result in outbox directory -->
<eip:exchange-target
service="test:test-file-outbox" />
</eip:target>
</eip:pipeline>
<eip:static-routing-slip service="ci:xxx-routingslip"
endpoint="endpoint">
<eip:targets>
<!-- Lookup UUID for supplier codes -->
<eip:exchange-target
service="ci:xxx-address" />
<!-- Lookup Enhance Description of products
<eip:exchange-target
service="ci:xxx-enhance-description" />
-->
</eip:targets>
</eip:static-routing-slip>
</beans>
Re: sendSync hangs on eip
Posted by Pieter Delmee <in...@rocadel.nl>.
The attachment didn't come through. So below is it's content in text.
1. test with a single message:
status role service 1
active providr process 2:0
active providr rtslip 3:0
active providr address 3:1
active consumr address 3:1
active providr enhdesc 3:2
active consumr enhdesc 3:2
done providr address 3:1
active consumr rtslip 3:0
active providr persist 3:3
done consumr persist 3:3
done consumr process 2:0
done providr rtslip 3:0
done providr enhdesc 3:2
2. test with three messages:
status role service 2 3 4
active providr process 2:1 2:2 2:3
active providr rtslip 3:4 3:5 3:8
active providr address 3:6 3:7 3:9
active consumr address 3:6 3:7 3:9
active providr enhdesc 3:10 3:11 3:13
active consumr enhdesc 3:10 3:11 3:13
done providr address 3:6 3:7 3:9
active consumr rtslip 3:4 3:5 3:8
active providr persist 3:14 3:12 3:15
done consumr persist 3:14 3:12 3:15
done consumr process 2:1 2:2 2:3
done providr rtslip 3:4 3:5 3:8
done providr enhdesc 3:10 3:11 3:13
3. test with 4 messages:
status role service 5 6 7 8
active providr process 2:4 2:5 2:6 2:7
active providr rtslip 3:16 3:18 3:22 3:25
active providr address 3:17 3:19 3:23 3:27
active consumr address 3:17 3:19 3:23 3:27
active providr enhdesc 3:20 3:21 3:26 3:30
active consumr enhdesc 3:20 3:21 3:26 3:30
done providr address 3:17 3:19 3:23 3:27
active consumr rtslip 3:16 3:18 3:22 3:25
active providr persist 3:24 3:28 3:29 3:31
done consumr persist 3:24 3:28 3:29 3:31
done consumr process 2:4 2:5 2:6 2:7
done providr rtslip 3:16 3:18 3:22 3:25
done providr enhdesc 3:20 3:21 3:26 3:30
4. test with 10 messages:
status role service 9 10 11 12 13 14 15
active providr process 2:9 2:8 2:10 2:11 2:12 2:13 2:14
active providr rtslip 3:32 3:33 3:40 3:43 3:46 3:48
active providr address 3:35 3:34 3:41 3:44 3:47 3:49
active consumr address 3:35 3:34 3:41 3:44 3:47 3:49
active providr enhdesc 3:36 3:37 3:42 3:51 3:52 3:53
active consumr enhdesc 3:36 3:37 3:42 3:51 3:52 3:53
done providr address 3:35 3:34 3:41 3:44 3:47 3:49
active consumr rtslip 3:32 3:33 3:40
active providr persist 3:39 3:38 3:45
done consumr persist 3:39 3:38 3:45
done consumr process 2:9 2:8
done providr rtslip 3:32 3:33
done providr enhdesc 3:36 3:37