-
Notifications
You must be signed in to change notification settings - Fork 174
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
Azure Service Bus Support for MessageBrokers packages #95
Comments
It's been one of the features that we've been asked about a lot of times, so yes - that's a great idea to add such kind of integration into Convey :) |
Cool, is there any design around topology you did for rabbitMQ? Would you be happy to review some PRs for supporting this? Would it be you'd want to discuss before hand? |
Hi, |
Okay cool, there is a bit of a performance hit using sub filters tho right? |
AFAIK yes, but the question is how would we map 1:1 approach from Rabbit in which queue is for each event type (routing key = event_type_name)? |
So if we are talking SQL Filters, they are the ones with the hit on Perf, we could use the correlation filters which offer up a https://docs.microsoft.com/en-us/azure/service-bus-messaging/topic-filters#filters What do you think? I still need to review how the current implementation set's up RabbitMQ but I think this may do the trick. |
Do you have any designs or rough sketches of the topology you have gone for with RabbitMQ, not probs if not I am sure the code will tell me 😃 |
Correlation Filters is the one I was thinking of :D In terms of design diagrams... nope, BUT! We usually went for the (configured by default) approach, in which you have:
But it'd be good to dive into the code (especially in subscriber) since there are few things that should be discussed:
There's probably more, but @spetz could provide more info I guess :D |
Okay, that makes sense so an equivalent in ASB might be (at a high level):
Does that sound about right? |
Yes, you can set pretty much any kind of RabbitMQ binding, either by using |
Okay, there would have to be another |
Okay @spetz @GooRiOn , so I have been thinking about this. I think this is my proposal: EventsWe have a topic per message type. This topic then has a set of subscribers which our case which be the name of the service defined for example we might have an This would result in ASB as the following:
This I feel follows good practice, we have a topic per message type, which I like. It also means giving an event you can see all the subscribers to it by the list of service names. We could also via config enable the subscribers to forward to queues taking maybe the convention of CommandsFor commands, I think we could follow a similar pattern. Let's say a
I feel this gives us a good way to use commands via topics and a way to specifically state you are sending a command by setting the SummaryI think the above ^ should be the default. There is also the potential to have events and topic names to be prefixed with the service name that publishes to the topic for the example above something like Let me know what you think was this your intention? I really liked the fact we stick to a message per topic here. If you do like it I am happy to add the extra library. Would we want to do small PRs into main and then not publish the package yet or would we want a feature branch says Let me know :) |
I really like the way that the message brokers packages are broken up & how they work with RabbitMQ. I would be super keen to look at adding azure service bus as another implementation following the same sort of topology.
I'd love to help tackle this with your guy's support. I maintain a wrapper aiming for a similar thing at my work that we have been using in production for a while.
Happy to discuss if you guys had any thoughts on this already.
The text was updated successfully, but these errors were encountered: