Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Scope queue/exchange/binding/consumer tracking [used by connection recovery] per connection (Bunny::Session) #704

Open
michaelklishin opened this issue Feb 21, 2025 · 0 comments
Milestone

Comments

@michaelklishin
Copy link
Member

michaelklishin commented Feb 21, 2025

We have done this in the Java client back in 2014, after about a year of experience with the original recovery implementation very much copied from Bunny (rabbitmq/rabbitmq-java-client@396bc54, see c.r.impl.recovery.AutorecoveringConnection and c.r.impl.recovery.AutorecoveringChannel in modern versions).

There are several reasons for doing this, for example: when N channels use the same queue and the queue is deleted on one of them, a recovery of all channels at once will resurrect the deleted queue, which, which violates an obvious user expectation.

Another reason is the risk of a channel exception during recovery, which can result in channel deletion from connection state, and the loss of all registered
consumers with it. In other clients this particular problem has not been observed in the wild
but it large falls into the same category.

Keeping track of the topology for recovery purposes in Bunny::Session, just like we already do
in at least two other clients, would eliminate an entire class of problems.

@michaelklishin michaelklishin added this to the 2.25.0 milestone Feb 21, 2025
@michaelklishin michaelklishin changed the title Move topology entity (and consumer) tracking to Bunny::Session Scope queue/exchange/binding/consumer tracking [used by connection recovery] per connection (Bunny::Session) Feb 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant