On 11/26/2010 10:43 AM, gcutuli wrote:

Dear all,
I'm moving toward the implementation of a multithreading application based
on QPID Messaging 0.7, and I experienced strange behaviors.

This is the background:

- subscription of N subjects with N different receivers (all of them under
the same session)
- running N different "diaspatching threads" for each receiver

Basically, each "dispatcher" executes an infinite loop where messages are
fetched from the related queue:

for (;;)
{
     msg = receiver.fetch(Duration::Forever);
}

After a random number of incoming messages, the library crashes (exactly on
the "fetch" method) with one of the following exceptions:
qpid::messaging::NoMessageAvailable or  qpid::messaging::SessionError

Is there any more detail logged for the session errors, either on the client or the broker? I suspect that may be the root cause of the issue.

My suspect is that the native qpid session object is not designed to be used
in a multi-threading scenario (in other words this object is not
thread-safe).

It is supposed to be threadsafe (that doesn't of course rule out a bug making it unsafe).

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]

Reply via email to