5 exercises — Practice EDA vocabulary in English: event vs command, publisher/subscriber, broker, topic, delivery guarantees (at-least-once, exactly-once), dead letter queue, and schema registry.
Core EDA vocabulary clusters
Message types: event (fact that happened), command (instruction to do something), query (request for data)
Delivery guarantees: at-most-once (may lose), at-least-once (may duplicate), exactly-once (no loss, no duplicate)
Error handling: dead letter queue (DLQ), retry policy, poison pill, schema registry (Avro, Protobuf, JSON Schema)
0 / 14 completed
1 / 14
A solutions architect explains a design decision to the team: "We're migrating from a synchronous REST-based architecture to event-driven. The core idea: services communicate through events rather than direct API calls. When an order is placed, the OrderService emits an 'OrderPlaced' event to Kafka. The InventoryService, NotificationService, and AnalyticsService all consume that event independently. OrderService doesn't know or care who consumes it — it just emits the fact. This is the difference between an event and a command. An event says 'this happened'. A command says 'please do this'. Events are for decoupling; commands are for orchestration." What is the key conceptual difference between an event and a command in messaging?
Event: a record of something that occurred — past tense, immutable. "OrderPlaced", "UserRegistered", "PaymentFailed". The emitter broadcasts to all interested parties without knowing who they are. Multiple consumers can react independently. Command: an instruction targeting a specific service — "ProcessPayment", "SendEmail", "UpdateInventory". Implies one designated handler. Typically expects acknowledgment. Query: request for data — "GetOrderById". Expects a response. EDA coupling benefits: Temporal decoupling: producer and consumer don't need to be running simultaneously (broker buffers). Interface decoupling: producer doesn't import or depend on consumer code. Deployment decoupling: services can be deployed independently. Scaling decoupling: consumers scale independently based on their own throughput needs. Naming conventions: events use past tense noun-verb: OrderPlaced, ShipmentDispatched, PaymentDeclined. Commands use imperative: PlaceOrder, ShipOrder, DeclinePayment. Message envelope vocabulary: Topic/Queue: the address to which messages are sent. Partition key: ensures messages for the same entity go to the same partition (ordering). Message ID: unique identifier for deduplication. Correlation ID: links related messages in a workflow. Timestamp: when the event occurred (not when it was published). In conversation: 'When OrderService calls InventoryService directly, it has a compile-time dependency on it. With events, those services have never heard of each other. That's the decoupling we're after.'
2 / 14
A backend engineer explains a reliability problem in the event pipeline: "Our notification service consumed Kafka events and sent emails. Sometimes the email service was temporarily down. The consumer retried three times, all failed, and the event was dropped — the user never got their email. We needed at-least-once delivery with a dead letter queue for events that exhaust all retries. Now failed events go to a DLQ topic. We have a separate process that monitors the DLQ, alerts on-call, and allows manual reprocessing after the downstream issue is resolved." What is a dead letter queue (DLQ) and when does a message end up there?
Dead letter queue (DLQ): a special destination for messages that cannot be successfully processed. Prevents one bad message from blocking an entire queue indefinitely. Causes of DLQ routing: Max retries exceeded: consumer failed N times (configurable). Poison pill: a malformed message that always causes a processing exception (e.g., invalid JSON, missing required field). Message TTL exceeded: message sat in the queue longer than its time-to-live. Consumer rejection: consumer explicitly nack'd the message without requeue. Delivery guarantee vocabulary: At-most-once: messages may be lost but never duplicated. Consumer acknowledges before processing. Simplest to implement, lowest overhead. Use for non-critical metrics. At-least-once: messages will be delivered, potentially multiple times. Consumer acknowledges after successful processing. Producer retries if no ack received. Consumers must be idempotent (safe to process duplicate messages). Exactly-once: each message delivered and processed exactly once. Requires coordination (Kafka transactions, idempotent consumers with deduplication). Highest cost/complexity. Idempotency strategies: Natural idempotency: processing the same "set name=John" twice has the same outcome. Idempotency key: consumer tracks processed message IDs and skips duplicates. Conditional updates: update only if version/timestamp matches. In conversation: 'Monitor your DLQ. A spike in DLQ messages is often your first indicator of a downstream service degradation or a schema mismatch after a deployment.'
3 / 14
A data engineer explains a breaking change incident: "Team A added a new required field to the OrderPlaced event. They forgot that Team B's analytics consumer also reads that topic. Team B's consumer didn't know about the new field and started throwing deserialization errors on every message. Their consumer stopped processing. We lost 4 hours of analytics data. This is a schema evolution failure — we needed a schema registry. With Confluent Schema Registry and Avro, producers and consumers register schemas. The registry enforces compatibility rules: backward-compatible changes are allowed; breaking changes are rejected." What is a schema registry and what problem does it solve in event-driven systems?
Schema registry: a versioned catalog of message schemas that producers and consumers use to serialize/deserialize messages. Without it: the schema is embedded in producer code and consumer code independently — any mismatch causes failures. Confluent Schema Registry: stores Avro, Protobuf, or JSON Schema definitions. Each schema version has an ID. Producers include the schema ID in each message. Consumers fetch the schema by ID to deserialize. Compatibility modes: BACKWARD: new schema can read messages written with old schema. Consumers can upgrade first. (Safe default: add optional fields.) FORWARD: old schema can read messages written with new schema. Producers can upgrade first. FULL: both backward and forward compatible. NONE: no compatibility checking — dangerous. Schema format vocabulary: Avro: binary format with schema embedded. Compact, popular with Kafka. Schema defined in JSON. Protobuf: Google's binary format. Field numbers for backward compatibility. Excellent for gRPC (see grpc-protobuf exercises). JSON Schema: human-readable, widely understood. Larger payload size. CloudEvents standard: a CNCF specification for event envelopes — standardizes metadata fields (id, source, type, time, datacontenttype) while leaving the data payload to the application. Enables tooling interoperability across brokers. In conversation: 'Every team that owns a topic should register its schema on day one. Enforcing compatibility at the registry level stops breaking changes before they break production.'
4 / 14
An architect explains two EDA coordination patterns to the team: "For our order fulfillment flow, we considered two approaches. Choreography: each service listens for events and decides what to do. OrderPlaced → InventoryService reserves stock and emits StockReserved → ShippingService creates shipment and emits ShipmentCreated → NotificationService sends email. No central controller. Orchestration: a central saga orchestrator sends commands to each service in sequence and waits for replies. More control, single failure point. We chose choreography for scalability, but lost visibility — it's hard to see the full state of an order at any point." What is the trade-off between choreography and orchestration in event-driven architectures?
Choreography: services react to events without a central coordinator. Each service knows only its own trigger events and what it emits. Advantages: loose coupling, services are independently deployable and scalable. Disadvantages: the overall workflow is implicit — it exists only as a pattern of event flows. Hard to monitor, debug, or change. The "where is my order?" question requires correlating events across multiple topics. Orchestration: a central coordinator (saga orchestrator, Step Functions state machine, Temporal workflow) sends commands and waits for responses. Advantages: explicit, visible workflow; easy to monitor progress; simple to add compensation steps (rollback). Disadvantages: orchestrator knows about all services (coupling); single point of failure if not resilient. Saga pattern vocabulary: Saga: a long-running transaction composed of local transactions with compensating actions for rollback. Choreography saga: compensating events emitted by each service. Orchestration saga: coordinator sends compensation commands. Step Functions / Temporal vocabulary: Workflow: the definition of an orchestrated business process. Activity: an individual unit of work (an API call, a database update). Compensation: the undo action for a completed step. In conversation: 'Start with choreography for simplicity. Add an event-correlation service or upgrade to orchestration when debugging "where is my order?" becomes a weekly pain.'
5 / 14
A platform engineer compares messaging broker options for a new project: "We're evaluating Kafka versus SQS/SNS for our new event platform. Kafka is a distributed log — messages are retained for days or weeks, consumers can replay the history, and you can have multiple consumer groups all reading the same topic independently. SQS is a queue — messages are deleted after successful consumption. No replay. For our use case — multiple teams need to consume the same events, and we need replay capability for new consumers and data recovery — Kafka is the right choice. For simple task queues, SQS is fine." What is the fundamental difference between a message queue (like SQS) and a message log/stream (like Kafka)?
Message queue (SQS, RabbitMQ): competitive consumption model. Message is received by one consumer from the competing group. After acknowledgment, the message is deleted. Use for work distribution: N workers processing a task queue, each task done exactly once. No replay, no history. Message log/stream (Kafka, Kinesis, Azure Event Hubs): publish-subscribe with durable retention. Multiple consumer groups can read the same topic independently, each maintaining its own offset. Messages are retained for configured duration (hours to forever). New consumers can replay from the beginning. Use for event-driven integration, audit logs, stream processing, data pipelines. Broker comparison: Kafka: distributed log, partitioned, retained, consumer groups, replay, very high throughput. Operational complexity. SQS: managed queue, at-least-once, visibility timeout, DLQ, FIFO option. Simple. SNS: pub/sub fanout (broadcast to multiple SQS queues, Lambda, HTTP endpoints). Not a queue — no retention. RabbitMQ: traditional AMQP broker, flexible routing (exchanges, bindings), plugin ecosystem. EventBridge: AWS managed event bus, content-based routing rules, schema registry, cross-account. Use when source is AWS services or SaaS integrations. In conversation: 'If you need replay — to replay events for a new service, fix a consumer bug, or audit past behavior — you need Kafka or a log-based system. A queue can't give you that.'
6 / 14
During a Slack discussion with the DevOps team regarding performance issues with our new microservice, Sarah (Lead Developer) says: 'We're seeing increased latency when processing user authentication events. The AuthenticationService publishes 'UserAuthenticated' events to RabbitMQ, and several downstream services consume them. We suspect some consumers are struggling to keep up with the event volume. To address this, we could implement a circuit breaker on the AuthenticationService to prevent overwhelming the consumer services.' What is the primary purpose of implementing a circuit breaker in this scenario?
A circuit breaker monitors the health of dependent services. When it detects excessive failures (e.g., slow response times or errors) from downstream consumers, it 'opens' – temporarily stopping requests to those consumers to prevent overload and allow them time to recover. This is a crucial pattern for resilience in event-driven systems where dependencies can introduce points of failure.
7 / 14
Mark (Senior Engineer) is reviewing a PR that adds support for asynchronous logging to the PaymentService. The PR includes a new 'PaymentProcessed' event emitted by the service and consumed by a LoggingService. The code in the LoggingService contains the following snippet: `logger.info('Payment processed successfully', {paymentId: payment.id});`. Mark asks, 'How should we ensure this logging event is properly handled to avoid potential issues?'
The key issue is decoupling. Directly consuming events from a producer (PaymentService) without a buffer or intermediary can lead to problems if the LoggingService becomes overwhelmed or temporarily unavailable. Using a message queue (like Kafka or RabbitMQ) provides this crucial separation – ensuring that events are reliably delivered and processed, even if the consumer experiences temporary issues.
8 / 14
Emily (Data Architect) is discussing the design of a new data pipeline with the team. She says: 'We're building an event-driven system where changes to customer profiles are published as 'CustomerProfileUpdated' events. These events will be consumed by various downstream services, including our recommendation engine and CRM. We want to ensure that the recommendation engine always has access to the latest profile data.' What architectural pattern is Emily primarily employing?
Emily's approach – where each service independently consumes and reacts to events – represents choreography. This pattern relies on loosely coupled services communicating through events, offering flexibility and scalability. It contrasts with orchestration (where a central controller manages the flow) and direct API calls (which introduce tight coupling).
9 / 14
John (DevOps Engineer) is explaining the team's choice of Kafka for their new event platform. He says: 'We need a system that can handle high volumes of events and allows consumers to replay events if necessary.' Which of the following features of Kafka directly supports this requirement?
Kafka's core design – its distributed log architecture – inherently allows for event replay. Because Kafka retains events on disk for a configurable period (configurable retention policies), consumers can consume the same event multiple times to recover from failures or perform historical analysis. This is a key differentiator compared to message queues like SQS which delete messages after consumption.
10 / 14
Sarah (Lead Developer) is discussing latency issues with the team. 'We're seeing increased latency when processing user authentication events. The AuthenticationService emits a 'UserAuthenticated' event upon successful login and this event is consumed by the AuthorizationService for subsequent requests. The logs show significant delays between the event emission and consumption.' What's likely causing this?
In an event-driven architecture, events are typically routed across a network. Network latency is a common bottleneck when services are geographically distributed or have poor network connectivity. While resource constraints can exacerbate the issue, the initial symptom – increased delay between emission and consumption – strongly points to network issues rather than immediate service overload.
11 / 14
Emily (Data Architect) is discussing a new data pipeline. 'We're building an event-driven system where changes to customer profiles are published as 'CustomerProfileUpdated' events. These events will trigger downstream processes like personalized email campaigns and targeted product recommendations.' Which of the following best describes the core benefit of this approach?
The key advantage of event-driven architecture is loose coupling. Publishing 'CustomerProfileUpdated' events allows services to react to changes independently and asynchronously. This decoupling prevents cascading updates and ensures that modifications don't inadvertently affect other systems – a direct update would create tight dependencies.
12 / 14
During a standup, David (Backend Engineer) says: 'We're using Kafka to handle high volumes of inventory updates. We've configured it with a retention policy of 7 days – this allows us to replay events if there are issues with the order fulfillment process.' What is the primary reason for implementing this event retention policy?
Event replay is a critical feature for robust event-driven systems. Retention policies allow consumers to recover from transient issues (like temporary service outages) or reprocess events if they've been corrupted. This capability dramatically improves system resilience and reliability – simply reducing storage costs isn't the primary goal here.
13 / 14
A solutions architect explains a design decision to the team: 'We're migrating from a synchronous REST-based architecture to event-driven. The core idea: services communicate through events rather than direct API calls. This allows us to build more resilient and scalable systems, but it also introduces new challenges like eventual consistency.' Which of the following is MOST relevant to this challenge?
Eventual consistency is a fundamental trade-off in event-driven architectures. Because events are processed asynchronously, there's a delay between when an update occurs and when all consumers have seen it. Managing this inconsistency requires careful design and monitoring to ensure data integrity – the other options represent different concerns within a broader system.
14 / 14
During a Slack discussion with the team regarding performance issues with a new microservice, Sarah (Lead Developer) says: 'We're seeing increased latency when processing user authentication events. The AuthenticationService emits a 'UserAuthenticated' event upon successful login…'. Which of the following best describes this situation in an event-driven architecture?
The core concept here is understanding that event-driven architectures rely on asynchronous communication. Increased latency doesn't automatically mean a problem; it's often due to processing time within the consuming service. Option A correctly identifies the root cause - routing issues can introduce delays. Options B and D are misleading – latency isn't inherently bad in an EDA, and successful authentication shouldn't have any performance impact.
What does the "Event-Driven Architecture Vocabulary" vocabulary exercise cover?
This exercise tests real IT vocabulary related to event-driven architecture vocabulary through 14 multiple-choice questions, each built from realistic workplace sentences rather than abstract definitions.
Is this vocabulary exercise free to use?
Yes. Every exercise on CoderSlingo, including this one, is completely free — no account, sign-up, or payment required.
How many questions does this exercise have?
This exercise has 14 questions. Each one shows a real-world sentence or scenario with multiple-choice options and an explanation once you answer.
What happens after I answer a question?
You'll see immediate feedback showing whether your answer was correct, along with a short explanation of why — then a button to move to the next question, and a full results screen at the end.
Can I retry the exercise if I get questions wrong?
Yes. Once you reach the results screen, click "Try again" to reset your answers and go through the exercise from the start as many times as you like.
Do I need to create an account to take this exercise?
No account is needed. Your answers are scored in your browser during the session — nothing is saved to a server, so you can jump straight in.
Is my progress saved if I leave the page?
No — progress within an exercise resets if you navigate away or reload. Each exercise is short enough to complete in a few minutes in one sitting.
Are these vocabulary exercises connected to other topics?
Yes — browse the full vocabulary exercises hub to find related modules covering adjacent IT topics and roles.
How is this different from reading a glossary or blog article?
Exercises like this one are active recall drills — you have to choose the correct term or phrasing yourself, which builds retention faster than passively reading a definition.
Where can I find more vocabulary exercises?
Browse the full Vocabulary exercises hub for hundreds of modules covering Agile, DevOps, security, databases, architecture, and more — organised by IT role and skill.