Our system currently needs to expose multiple events to other systems like Azure Power Apps, Logic Apps, Azure DevOps or any other Custom app. We are mostly an Azure shop so were looking at Event Grid, Event Hubs and Service Bus.
We have gone through couple of documentation from Microsoft
https://docs.microsoft.com/en-us/azure/event-grid/compare-messaging-services
The main criteria we are looking for is
- Any subscriber can subscribe to any event it wants. A subscriber may not want to receive all events. It will subscribe to only Event A, Event B
- Order of events is important but not significant. Although we can make sure to check this in our publishing service (eg: send an event only if data exists in database)
- Cost efficient (obviously!)
- Considering Point 1, we are leaning more towards Event Grid, as we can create multiple topics for each event and the subscriber can choose to subscribe to whichever topic it wants.
As in the diagram we can see System A and B subscribes to only 1 topic while System C subscribes to all topics. Subscriber can then create Azure Functions (webhooks or eventgrid trigger) to create a subscription and receive the event
Event Hubs won't allow distribution mechanism and won't fulfil point 1 since it is more of a streaming service as far as we know
Service bus is a brokerage system and can fulfil the needs but we are not sure about its cost and the exact feature-set of Service Bus we will be using
Is event grid is good fit here or should we explore Service Bus more? Are there any more options/alternatives?
Will update the post if more details are required.
Any pointers, opinions appreciated!