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

Jerry Kuch jerryk at vmware.com
Wed Dec 15 16:56:29 GMT 2010


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:

http://www.rabbitmq.com/releases/rabbitmq-dotnet-client/v1.5.0/rabbitmq-dotnet-client-1.5.0-user-guide.pdf

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,
Jerry

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

Hi,

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?

http://www.rabbitmq.com/releases/rabbitmq-dotnet-client/v1.5.0/rabbitmq-dotnet-client-1.5.0-user-guide.pdf

NotSupportedException

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);

thanks,
-Steven
<ATT00001..txt>



More information about the rabbitmq-discuss mailing list