-
Notifications
You must be signed in to change notification settings - Fork 42
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Documentation change: refactors dead-letter exchange example and its description #134
base: main
Are you sure you want to change the base?
Documentation change: refactors dead-letter exchange example and its description #134
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just left a couple of doc comments you'll need to address (too painful via GH edits!) but looks great.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don't we only need to declare the exchanges before starting the pipelines? The pipelines can still declare their own queue, can't they?
Co-authored-by: Andrea Leopardi <an.leopardi@gmail.com>
Co-authored-by: Andrea Leopardi <an.leopardi@gmail.com>
Technically, no, but if my experience is representative (and that of teammates I have witnessed), the setup of the RabbitMQ topology is by far the most confusing aspect of getting this to work. It's not clear which options are read or how, much less exactly when they run (admittedly, To your point, another way to demonstrate how to set up a dead-letter exchange/queue would be to declare a separate Broadway pipeline that binds to the dead-letter queue (in addition to the I favor doing the setup in its own separate place, however. This stems from my opinion that the current It is a similarly confusing problem when specifying an alternate exchange, and again, it's a bit easier to bring clarity to this if the RabbitMQ setup is done before any Broadway pipelines are even in the picture. TL;DR: Broadway pipelines are scoped not to an exchange, but to a queue, so any arguments/actions that setup exchanges or bindings don't really belong alongside the queue. Therefore it's more clear/explicit/educational/SRP to include an example where the setup of the entire RabbitMQ instance happens separately in one dedicated place. Sorry for all the words, but I wanted to make sure my reasoning made sense. Coding is easy; communication is hard. |
Can you help clarify them then? 🙃
Yep, 100%, but this is confusion about RabbitMQ works, not really about how
Word! |
That is what this PR is trying to do. Remember that the current example on
No. This is about Imagine going to a restaurant, placing an order for a hamburger, and the waiter says "Do you want fries with that?" You answer "yes!". Later, your food arrives, but no fries. "Hey, I ordered fries with my hamburger" you say. But the waiter responds "oh -- no, that's not how things work here. You may not have known that because you haven't eaten here before, but when I prompt you 'do you want fries with that', it actually sometimes applies to another table's order, not yours." You would find this very strange, right? That's a little like what I understand that the existing options are probably fine for lots of setups (although further clarifications, esp. around bindings would be helpful), and I'm not suggesting they be altered. What I am suggesting via this PR is that an alternative example be included that demonstrates how to provision a more complex setup like what is required for a dead-letter queue. I am confident that showing how to ensure that your RabbitMQ instance is provisioned in a way that is more declarative will reduce confusion and make room for further clarifications. |
I disagree 🙃 It's not about
I don't recall, maybe we let you do
I don't think the example was necessary. Btw, I’m all for adding the example, I’m just trying to make sense of the use case 🙃 And sorry for the late reply, been swamped with stuff to do! |
This PR affects documentation only. It is submitted as a fix for issue #133