Event-driven architectures are distributed, asynchronous, and scalable. The rise of real-time decision making, the on-demand economy, explosion of data, and the adoption of microservices have all driven the adoption of event driven architectures. Event-driven code is reactive by nature and significantly different from imperative programming. In this breakout session, we'll examine building an event-driven application and tackle the most common stumbling blocks of EDA, including: • How and where for maintaining state. • How to handle transactions that span multiple services. • REST or Kafka (or something else). • Asynchronous testing. We'll end by quickly (and easily) spinning up an event-driven application using Quarkus and Red Hat AMQ Streams (Apache Kafka).