I'm currently learning about event driven architecture and have the following 2 microservices.
- Product Service - Responsible for managing products
- Ordering Service - Responsible for processing orders
The Product Service publishes the following events whenever a product is created
- ProductedCreatedEvent
- ProductedUpdatedEvent
The Ordering Service consumes these messages and updates its own local Product data store.
Questions
The ordering of the events seems quite important as I don't want the ordering service to consume a ProductUpdatedEvent before the product has actually been created.
I've been looking at Azure Service Bus as this can guarantee ordering however their latest product, which is designed for event driven architecture, Azure Event Grid, doesn't support guaranteed ordering.
Should you only use a messaging system which supports FIFO in a microservice architecture?
If the ordering cannot be guaranteed through the message system, what other ways can we address this issue, if it is indeed an issue.