[rabbitmq-discuss] error: "Pipelining of requests forbidden" on C# client

Jerry Kuch jerryk at vmware.com
Thu Dec 16 17:54:09 GMT 2010

Hi, Steven:

Absolutely!  A self-contained snippet of code that reproduces a potential problem is always a valuable thing for us to have...  Please pass one on if you have one.


On Dec 15, 2010, at 10:02 PM, Steven Taylor wrote:

Hi Jerry,

you found the same pdf that I did.

I'm not knowingly using RPC continuation at this stage, unless using the Subscription pattern falls under this category. Also, I am careful to use a different channel for each subscription or basic channe that lives on the same thread.

Would you like me to get in touch if I can repeat the error with a test case?


On 15 December 2010 16:56, Jerry Kuch <jerryk at vmware.com<mailto:jerryk at vmware.com>> wrote:
Steven:  Is there any chance that the channel instance on which you're doing this work is being used by more than one thread?

In the .NET client one expects this error when something tries to queue up more than one RPC continuation in the internal continuation queue at a time.  The Rabbit .NET client user guide talks about such thread safety issues:


in some detail in a couple of spots.

The Rabbit Java client has similar restrictions.  With both the Java and .NET clients, it makes sense to structure your application so that a unique thread owns a given instance of a non-thread safe Rabbit client resource (e.g. Channels in the Java client, IModel in the .NET).

Best regards,

On Dec 15, 2010, at 8:28 AM, Steven Taylor wrote:


Got this error: "Pipelining of requests forbidden"

Found a reference in the documentation (see below).  As part of the "I assert queue exists" logic, I was (re-)declaring the exhange.  Is that wrong?

Could it be a threading issue?



s being thrown from a method in class RpcContinuationQueue

complaining about

"Pipelining of requests forbidden" (which occurs in situations where

more than one AMQP RPC, such as

ExchangeDeclare, is run simultaneously).

Offending Line:
BasicGetResult msg=ch.BasicGet(QueueNme,false);


More information about the rabbitmq-discuss mailing list