[rabbitmq-discuss] Multithreading and rabbitmq-c

Alan Antonuk alan.antonuk at gmail.com
Fri Feb 10 20:58:30 GMT 2012

Responses inlined below:


On Fri, Feb 10, 2012 at 2:00 PM, Arun Chandrasekaran <visionofarun at gmail.com
> wrote:

> Hi all,
> With rabbitmq-c, it is possible to bind on different channels from
> different threads?
> Basically, I'm not sharing any of these between the threads:
> amqp_connection_state_t, socket, channel.

You have interpreted the documentation correctly:

amqp_connection_state_t, its socket, and all associated amqp_channel_t's
must not be shared between threads.  Its ok to have separate instances of
these objects used in different threads.

> Here is the "examples/amqp_consumer.c" sample code modified for 2 threads:
> http://codepad.org/zPa91lbr. I have also attached the code for your
> reference.
> I get this error from the second thread :
> "Declaring queue: server connection error 504, message: CHANNEL_ERROR -
> expected 'channel.open'"
Your problem is on line 156:
amqp_channel_open(conn, 1); /* opens channel 1 */

You then try to use channel stored in the variable chan on line 160:
... = amqp_queue_declare(conn, chan /* may not be channel 1 */ ...);

Try changing 156 to open channel stored in chan.

Also note that channels are on a per-connection basis, so it is ok to have
two different connections with the same channel identifiers.

> The README clearly states that it is valid to have different connections,
> sockets and channels per thread (last section):
> http://hg.rabbitmq.com/rabbitmq-c/file/fb6fca832fd2/README

Just an FYI: the canonical sources for the rabbitmq-c library have moved to
a new location:

> Can someone give me an insight into where I am going wrong or if it is a
> limitation with rabbitmq-c?
> Cheers,
> Arun
> _______________________________________________
> rabbitmq-discuss mailing list
> rabbitmq-discuss at lists.rabbitmq.com
> https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20120210/c6711c10/attachment.htm>

More information about the rabbitmq-discuss mailing list