Hi All:
I have setup a Spring (version 3.2.0) Message Driven POJO (MDP) inside JBoss (7.1.1.Final) as below.
This is working. The problem is, this setup has no concurrency. So for example, if I drop 10 messages on the queue, only one MDP will service all 10 messages, one after the other. Reading the documentation, if I add thisCode:<jee:jndi-lookup id="connectionFactory" jndi-name="java:/JmsXA" lookup-on-startup="true" /> <!-- proxy-interface="javax.jms.ConnectionFactory" --> <jee:jndi-lookup id="testQueue" jndi-name="java:/queue/test" lookup-on-startup="true" /> <!-- proxy-interface="javax.jms.Queue" --> <!-- this is the Message Driven POJO (MDP) --> <bean id="messageListener" class="com.mobile.mdb.RealTimeQuoteServiceMDB"> <property name="realTimeQuoteService" ref="quoteServiceBean" /> <property name="stockQuoteCache" ref="stockQuoteCache" /> <property name="stockQuoteDAO" ref="stockQuoteDAO" /> </bean> <!-- and this is the message listener container --> <bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="connectionFactory" /> <property name="destination" ref="testQueue" /> <property name="messageListener" ref="messageListener" /> </bean>
to the "jmsContainer" bean above, I should see 10 concurrent MDPs available for execution at any time. In practice, I see the below startup execption in JBoss logsCode:<property name="concurrentConsumers" value="10"/>
Reading the documentation, it sounds like I need to setup a JBossWorkManagerTaskExecutor to achieve the concurrency. But I am not able to find any examples on how to set this up. So asking the gurus here, any help/pointers will be very appreciated.Code:18:04:46,172 ERROR [org.hornetq.ra.HornetQRASessionFactoryImpl] (jmsContainer-2) Could not create session: javax.jms.IllegalStateException: Only allowed one session per connection. See the J2EE spec, e.g. J2EE1.4 Section 6.6 at org.hornetq.ra.HornetQRASessionFactoryImpl.allocateConnection(HornetQRASessionFactoryImpl.java:816) at org.hornetq.ra.HornetQRASessionFactoryImpl.createSession(HornetQRASessionFactoryImpl.java:470) at org.springframework.jms.support.JmsAccessor.createSession(JmsAccessor.java:196) [spring-jms-3.2.0.RELEASE.jar:3.2.0.RELEASE] at org.springframework.jms.listener.DefaultMessageListenerContainer.access$1400(DefaultMessageListenerContainer.java:112) [spring-jms-3.2.0.RELEASE.jar:3.2.0.RELEASE] at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.initResourcesIfNecessary(DefaultMessageListenerContainer.java:1089) [spring-jms-3.2.0.RELEASE.jar:3.2.0.RELEASE] at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1068) [spring-jms-3.2.0.RELEASE.jar:3.2.0.RELEASE] at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1061) [spring-jms-3.2.0.RELEASE.jar:3.2.0.RELEASE] at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:958) [spring-jms-3.2.0.RELEASE.jar:3.2.0.RELEASE] at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_26]
Thanks in advance!


Reply With Quote
