이벤트 버스 및 메시지 브로커
코레오그래피 사가에 안정적인 비동기 통신을 제공하도록 메시지 브로커와 이벤트 버스를 활용합니다.
이벤트 버스 및 메시지 브로커은(는) CoddyKit의 무료 Microservices Communication Patterns (Saga, Circuit Breaker) 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Microservices Communication Patterns (Saga, Circuit Breaker) 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Microservices Communication Patterns (Saga, Circuit Breaker) 강의에는 총 4개의 강의가 포함되어 있습니다.
이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.
Reliable Choreography Sagas
In a choreography saga, services communicate by exchanging events. For this to work reliably in a distributed system, we need robust communication mechanisms.
Imagine an order being created, then needing payment, and finally shipping. Each step is an event triggering the next service.
- Order Service publishes
OrderCreated - Payment Service subscribes to
OrderCreated, publishesPaymentProcessed - Shipping Service subscribes to
PaymentProcessed, publishesShipmentScheduled
What's an Event Bus?
An Event Bus is a pattern that enables different parts of an application (or different services) to communicate by sending and receiving events without knowing about each other directly.
Think of it as a central hub where events are broadcast. Any interested party can 'listen' for specific events.
It decouples services, meaning they don't need to know who will process their events, only that an event occurred.
Event Bus in Action
Consider an internal event bus within a single application:
- A user clicks a 'Save' button.
- The UI component publishes a
UserSavedevent to the event bus. - A logging module, a notification module, and a data synchronization module might all subscribe to
UserSaved.
They all react to the event without the UI knowing about them. This is simple and effective for in-process communication.
Introducing Message Brokers
While an event bus is great for in-process communication, distributed microservices need more. This is where Message Brokers come in.
A message broker is a dedicated service (like RabbitMQ, Kafka, or AWS SQS) that acts as an intermediary for messages between different applications or services.
It provides advanced features essential for reliable communication across networks.
Broker Benefits for Sagas
Message brokers offer crucial benefits for choreography sagas:
- Durability: Messages persist even if services are down, preventing data loss.
- Guaranteed Delivery: Ensures messages reach their intended consumers.
- Decoupling: Senders and receivers don't know each other, promoting service independence.
- Load Balancing: Distributes messages efficiently among multiple instances of a consuming service.
- Asynchronous: Services don't wait for responses, improving performance and responsiveness.
Bus vs. Broker: The Difference
While both facilitate event-driven communication, an Event Bus is typically a lightweight, in-memory mechanism within a single application or process.
A Message Broker is a robust, external system designed for inter-process and inter-service communication across a network. It provides features like message queues, topics, persistence, and complex routing.
You can think of a message broker as a powerful, distributed implementation of an event bus concept.
Brokers Enable Choreography
Message brokers are the backbone of choreography sagas. They allow services to:
- Publish Events: A service completes a step and publishes an event to a specific topic (a named channel on the broker).
- Subscribe to Events: Other services interested in that event subscribe to the topic and receive the event to trigger their next step.
This decentralized flow, driven by events through a broker, defines the choreography pattern.
Example: Publishing an Event
Here's a simplified example of how an OrderService might prepare and conceptually "publish" an OrderCreated event using a message broker.
The broker handles the actual sending to subscribers.
public class OrderService {
public static void main(String[] args) {
String orderId = "ORD_456";
String customer = "Alice";
String item = "Widget";
// Imagine this event goes to a message broker
String eventPayload = "{ \"type\": \"OrderCreated\", \"orderId\": \"" + orderId + "\", \"customer\": \"" + customer + "\", \"item\": \"" + item + "\" }";
System.out.println("OrderService prepares event:");
System.out.println(eventPayload);
System.out.println("This event would be sent to a 'order_events' topic on a message broker.");
}
}Example: Subscribing to an Event
Now, let's see how a PaymentService would conceptually "subscribe" to and process the OrderCreated event from the broker.
It listens on the order_events topic.
public class PaymentService {
public static void main(String[] args) {
// Imagine PaymentService receives this event from a message broker
String receivedEvent = "{ \"type\": \"OrderCreated\", \"orderId\": \"ORD_456\", \"customer\": \"Alice\", \"item\": \"Widget\" }";
System.out.println("PaymentService received event:");
System.out.println(receivedEvent);
// Parse and process the event
if (receivedEvent.contains("\"type\": \"OrderCreated\"")) {
System.out.println("Processing payment for order: ORD_456...");
System.out.println("Payment processed successfully!");
} else {
System.out.println("Unknown event type received.");
}
}
}Check Your Understanding
Message brokers are crucial for choreography sagas. Which of the following are key benefits provided by message brokers for reliable asynchronous communication?
Recap: Event Bus & Brokers
In this lesson, we explored how Event Buses and Message Brokers facilitate reliable asynchronous communication, especially for choreography sagas.
- An Event Bus is a pattern for in-process event communication.
- A Message Broker is an external, robust system that implements this pattern for distributed services, offering features like durability and guaranteed delivery.
- They enable services to publish events and subscribe to topics, forming the core of how choreography sagas progress.
Next, we'll look at how to handle compensation when things go wrong in these event-driven flows!
AI 튜터와 함께 Microservices Communication Patterns (Saga, Circuit Breaker)을(를) 배우세요 — 무료
브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.
- 코스
- 12
- 레슨
- 48
자주 묻는 질문
“이벤트 버스 및 메시지 브로커” 강의는 무료인가요?
네 — “이벤트 버스 및 메시지 브로커” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Microservices Communication Patterns (Saga, Circuit Breaker) 강의 전체를 잠금 해제할 수 있습니다. Microservices Communication Patterns (Saga, Circuit Breaker) 강의에는 총 4개의 강의가 포함되어 있습니다.
“이벤트 버스 및 메시지 브로커”에서 뭘 배우나요?
코레오그래피 사가에 안정적인 비동기 통신을 제공하도록 메시지 브로커와 이벤트 버스를 활용합니다. 브라우저에서 직접 실행하는 실습 코드로 Microservices Communication Patterns (Saga, Circuit Breaker)을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Microservices Communication Patterns (Saga, Circuit Breaker)을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Microservices Communication Patterns (Saga, Circuit Breaker)은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“이벤트 버스 및 메시지 브로커” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Microservices Communication Patterns (Saga, Circuit Breaker) 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Microservices Communication Patterns (Saga, Circuit Breaker) 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 이벤트 기반 사가 설계
- 이벤트 버스 및 메시지 브로커
- 이벤트를 사용한 보상 처리
- 멱등 이벤트 소비자 구축