[ https://issues.apache.org/activemq/browse/AMQ-758?page=all ] james strachan resolved AMQ-758: --------------------------------
Resolution: Won't Fix Closed for now as this bug is an effect of the design of Message Groups - they are meant to implement single-threaded processing of a single message group. > Message Groups disables server side JMS session pooling > ------------------------------------------------------- > > Key: AMQ-758 > URL: https://issues.apache.org/activemq/browse/AMQ-758 > Project: ActiveMQ > Type: Bug > Components: Broker > Versions: 4.0 > Environment: XP, ActiveMQ 4.0 release, Lingo 1.1, Spring 2.0 > Reporter: Sanjiv Jivan > Attachments: lingocluster.zip > > > Specifying Message Groups on the client causes serialized/ single threaded > processing of messages on the server side even when server side session > pooling is configured. > Please find attached sample code along with a JUnit test "MessageGroupTests" > that demonstrates the issue. My sample is based on Lingo. The client calls an > async method solve(scenarioName) and receives progress callbacks. When the > cleint calls cancel(scenarioName) during a solve, the cancel method on the > server side should be received and stop the running solve. Since a single JMS > session evexcutes message listeners serially, I've configured a JMS server > session pool of size 20 using Spring's DefaultMessageListenerContainer class. > I've configured use of a message group via a Lingo marshaller class > org.sanjiv.lingo.client.MessageGroupMarshaller. This class basically sets the > JMS header "JMSXGroupID" to the "scenarioName" in question so that when a > cluster of servers are running, the cancel(scenarioName) call is directed to > the server that had solve(scenarioName) called for a given "scenarioName". > The issue is that when the message groups are enabled using the > MessageGroupMarshaller, the cancel(scenarioName) call blocks and waits for > the async solve(scenarioName) method to complete on the server (which is not > the right behaviour). Disabling message groups by commenting out the client > side MessageGroupMarshaller marshaller in > org/sanjiv/lingo/test/messageGroupContext.xml results in the call being > excuted correctly. > I see that the docs for message groups say that message order is preserved, > however that should not require that the second message blocks till the first > message completes. Only the order in which the listeners are executes should > be guaranteed to be the order of message receipt. > Let me know if you have any questions. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: https://issues.apache.org/activemq/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira