rebus-org / Rebus.RabbitMq

:bus: RabbitMQ transport for Rebus
https://mookid.dk/category/rebus
Other
63 stars 44 forks source link

restore broken "Automatically create input queue if it suddenly disappears" feature #49

Closed jarikp closed 5 years ago

jarikp commented 5 years ago

It looks like the feature "Automatically create input queue if it suddenly disappears while the app is running " announced in release "5.0.0" has been broken in a later release, when the method EnsureConsumerInitialized() was refactored.

Here is my suggestion for fixing this in RabbitMqTransport, based on "Model.QueueDeclarePassive" try-catch. In case of failure, the transport must recycle the "broken" (unbound) model and try to re-create subscriptions using existing logic.

Please advice, whether this way of queue-existence checking may have any negative impact on the performance or is it ok to have this way?

A unit test is included to illustrate the problem scenario and wanted behavior.

Best regards /Jarik

Rebus is MIT-licensed. The code submitted in this pull request needs to carry the MIT license too. By leaving this text in, I hereby acknowledge that the code submitted in the pull request has the MIT license and can be merged with the Rebus codebase.

jarikp commented 5 years ago

somehow the unit test is failing when it run along with other tests, but it passes if it run as single test :-|

jarikp commented 5 years ago

@mookid8000 Mogens, sorry to bother you, but did you have chance to look at this fix suggestion? Is it a valid way of solving the problem?

mookid8000 commented 5 years ago

oh sorry, I completely forgot about this! I'll get back to it tonight

mookid8000 commented 5 years ago

Excellent solution! 👍 it will be out in Rebus.RabbitMq 5.1.2 in a few minutes.

jarikp commented 5 years ago

Thank you! 👍