You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Nathan Mittler (JIRA)" <ji...@apache.org> on 2007/03/18 12:44:36 UTC
[jira] Resolved: (AMQCPP-90) Openwire Session doesn't run its
MessageListeners from a single thread
[ https://issues.apache.org/activemq/browse/AMQCPP-90?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Nathan Mittler resolved AMQCPP-90.
----------------------------------
Resolution: Fixed
Fixed in trunk. I ran with the sample application and verfied that messages are always received in the same thread.
> Openwire Session doesn't run its MessageListeners from a single thread
> ----------------------------------------------------------------------
>
> Key: AMQCPP-90
> URL: https://issues.apache.org/activemq/browse/AMQCPP-90
> Project: ActiveMQ C++ Client
> Issue Type: Bug
> Components: Openwire
> Affects Versions: 2.0
> Reporter: Albert Strasheim
> Assigned To: Nathan Mittler
> Fix For: 2.0
>
> Attachments: MultipleConsumerTest.cpp, MultipleConsumerTest.java
>
>
> According to the JMS 1.1 specification, section 4.4.14 Serial Execution of Client Code:
> For this reason, JMS does not cause concurrent execution of client code unless
> a client explicitly requests it. One way this is done is to define that a session
> serializes all asynchronous delivery of messages.
> To receive messages asynchronously, a client registers an object that
> implements the JMS MessageListener interface with a MessageConsumer. In effect,
> a Session uses a single thread to run all its MessageListeners. While the thread is
> busy executing one listener, all other messages to be asynchronously delivered
> to the session must wait.
> In the attached code I have 5 consumers created from the same session, all with the same message listener instance that receives a message, prints something and then sleeps for a while. When running the C++ code, one sees that 5 messages (there are 5 consumers) are delivered at approximately the same time. Under Java, one only sees 1 message delivered per interval.
> This seems to indicate that the Openwire Session doesn't run its MessageListeners from a single thread. This can cause problems if the user's MessageListener isn't thread safe.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.