Hi ,
I tried to use BatchMessageListenerContainer with camel still it is picking
up single message from queue per transaction, could you please let me know
what I am doing wrong here.
Here is my code snippet
Look like BatchMessageListenerContainer not deployed in Maven central.
I have copied source code from spring-batch-infrastructure-tests module
And setup TransactionInterceptor and RepeatOperationsInterceptor as per
there documentation
<bean id="transactionInterceptor" class="org....TransactionInterceptor">
<property name="transactionManager" ref="jtaTransactionManager" />
<property name="transactionAttributes" value="*=PROPAGATION_REQUIRED" />
</bean>
<bean id="repeatOperationsInterceptor"
class="org.....RepeatOperationsInterceptor">
<property name="repeatOperations" ref="batchTemplate" />
</bean>
<bean id="batchTemplate" class="org.....RepeatTemplate">
<property name="completionPolicy">
<bean
class="org.springframework.batch.repeat.policy.SimpleCompletionPolicy">
<constructor-arg value="100" />
</bean>
</property>
</bean>
I was expecting 100 message per transaction .....
----BatchListenerContainerFactory---
public AbstractMessageListenerContainer createMessageListenerContainer(
JmsEndpoint arg0) {
BatchMessageListenerContainer batchMessageListenerContainer=new
BatchMessageListenerContainer();
batchMessageListenerContainer.setTransactionManager(transactionManager);
batchMessageListenerContainer.setConnectionFactory(connectionFactory);
batchMessageListenerContainer.setMessageListener(messageListener);
batchMessageListenerContainer.setDestinationName(destinationName);
batchMessageListenerContainer.setConcurrentConsumers(1);
batchMessageListenerContainer.setReceiveTimeout(3000);
batchMessageListenerContainer.setSessionTransacted(true);
Advice[] advices = new Advice[2];
advices[0]=transactionInterceptor;
advices[1]=repeatOperationsInterceptor;
batchMessageListenerContainer.setAdviceChain(advices);
return batchMessageListenerContainer;
}
------Camel root----
<camel:from
uri="jms:queue:queue.incomingEvents?messageListenerContainerFactoryRef=#batchListenerContainerFactory&transacted=true"
/>
<transacted ref="PROPAGATION_REQUIRES_NEW" />
<camel:to uri="stream:out"/>
regards,
pp
--
View this message in context:
http://camel.465427.n5.nabble.com/How-to-improve-throughput-by-grouping-messages-in-a-Transaction-tp5773344p5774390.html
Sent from the Camel - Users mailing list archive at Nabble.com.