Your team is building an e-commerce application where each microservice needs to react to events generated by other services (for example, an Order Service emitting an event when a new order is placed). What is the best way to structure this communication to ensure loose coupling?