[ 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