rabbitmq / rabbitmq-erlang-client

Erlang client for RabbitMQ
https://www.rabbitmq.com/
Other
184 stars 127 forks source link

Direct connections from outside of RabbitMQ will fail in stable #91

Closed binarin closed 5 years ago

binarin commented 7 years ago

Direct connections work from within the broker itself, but any project which depends only on amqp_client is broken (like https://github.com/pma/amqp/issues/73)

This happened because in https://github.com/rabbitmq/rabbitmq-common/commit/81b5eabc6b705b2e35ecf444ee25a7a86ac244d9#diff-7159eb0974065867f293d7148ba5036aL1 rabbit_queue_collector module was removed from rabbit_common, but it's still being referenced here https://github.com/rabbitmq/rabbitmq-erlang-client/blob/5671dbb63eb2506bc2dc768a15f9fca2c1487a47/src/amqp_connection_type_sup.erl#L78

michaelklishin commented 7 years ago

@binarin thanks. Would you be interested in submitting a PR? I think the right thing to do here is to find a way for rabbitmq-common to not have a dependency on rabbit_queue_collector. Queue collector's original purpose was to clean up exclusive queues when certain events (well, their connection closure) happens.

binarin commented 7 years ago

No, I don't think that I'll have any free time soon.

michaelklishin commented 7 years ago

No worries, thanks for the report!

On Tue, Aug 29, 2017 at 9:17 AM, Alexey Lebedeff notifications@github.com wrote:

No, I don't think that I'll have any free time soon.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/rabbitmq/rabbitmq-erlang-client/issues/91#issuecomment-325697340, or mute the thread https://github.com/notifications/unsubscribe-auth/AAAEQpahXy8QDfrR1Y-iGqyU5ctQeZPiks5sdCt4gaJpZM4PFqsO .

-- MK

Staff Software Engineer, Pivotal/RabbitMQ

binarin commented 6 years ago

For direct connections rabbit_queue_collector is running on the wrong side of connection - on client. So e.g. in case of network split between client and server it doesn't have a chance to perform a proper cleanup. But the cleanup is still performed due to some other links/monitors set-up during channel opening process. I think that it's better to make all this explicit and just start a collector and some sort of connection monitoring process on the server side.