Closed SergeAx closed 5 years ago
See Declaration property equivalence in the Queues guide.
See Declaration property equivalence in the Queues guide.
I understand you may get tens complains like this every week, but i can assure you I've read the docs. The problem not in an error itself or its code, but in error message, which is misleading. It says I must set durable
to true
, which I already did. Or maybe you are saying that it is a RabbitMQ fault, not your package's, and I should file an issue in their repo?
Update: I've checked the package's source and can see now it's a problem on a RabbitMQ side, sorry. Case closed here.
@SergeAx - https://github.com/rabbitmq/rabbitmq-server/issues/1887
Basically, the presence of "exclusive" negates the durable argument, but durable is checked first. I'm fixing it now. Thanks for the code to reproduce the issue.
@SergeAx apologies, I didn't spot the combination of properties you were using. Indeed most such questions come from complete beginners so I used a canned response.
Here is a minimal example:
Using:
As you can see, in this example I am trying to recreate same queue twice, first with
exclusive:true
, then withexclusive:false
. It fails as expected, but produces unexpected error message:Exception (406) Reason: "PRECONDITION_FAILED - inequivalent arg 'durable' for queue 'test_qqq' in vhost '/': received 'false' but current is 'true'"
I spent half an hour looking blankly at my
durable: true
statement, but actually should be looking intoexclusive
argument. Is there a way to keep future users from such a loss of time? It should be likeargs 'durable' and 'exclusive' are in conflict with each other
. Or is it RabbitMQ problem?