Description
Describe the bug
Hi,
If a timeout is produced when trying to declare a queue using the method QueueDeclare
, following attempts to define a queue using the same IModel
will produce a System.NotSupportedException. Pipelining of requests forbidden after timeout error.
Also if I try to dispose a IConnection
that was unexpectedly closed, the Dispose method seems to never return.
To simulate timeout I use the windows application clumsy version 0.3 with the following configuration
I attach an example client:
RabbitMQTimeout.zip
Reproduction steps
- Start rabbitmq in a docker env:
docker run --hostname my-rabbit --name some-rabbit -p 15672:15672 -p 5672:5672 rabbitmq:3-management
- Open clumsy and configurate as indicated
- Start the attached project
- When the message "Channel MyChannel9 opened in connection 'MyClient'" is printed, start clumsy
- A timeout exception will appear when trying to create one of the queues
- Following exceptions will be System.NotSupportedException. Pipelining of requests forbidden
- Also after a while the connection will be unexpectedly closed with message: 541 - Unexpected Exception
Expected behavior
After the first timeout the channel should be created if there are no more connectivity problems. Otherwise it should generate again a Timeout exception.
Also the IConnection
should be able to be manually disposed after an unexpected error. The line 232 of class RabbitMQCore is never executed.
Additional context
No response