In a normal request-response system, service A calls service B directly and waits for an answer. If B is down or slow, A is stuck. Event-driven architecture flips this around. Instead of calling anyone, a service just announces a fact: "Order 4821 was placed." That announcement is an event. It is an immutable record of something that already happened, written in the past tense.
The service that emits the event is the producer. It does not know or care who is listening. Other services, the consumers, subscribe to the kinds of events they care about and react when one arrives. An OrderPlaced event might trigger the payment service, the inventory service, the email service, and an analytics pipeline, all independently, none of them aware of each other.
Sitting between producers and consumers is a broker or event bus, such as Apache Kafka, RabbitMQ, AWS EventBridge, or NATS. The producer hands the event to the broker and moves on. The broker holds the event and delivers it to interested consumers. This indirection is the whole point: nobody has a hardcoded address for anybody else.