core
Core
모든 모듈이 공유하는 도메인을 정의하는 중앙 모듈입니다.
개요
mmmq의 모든 모듈이 공통으로 사용하는 객체를 한곳에 모아 둔 모듈입니다.
Host
다른 모듈과 통신할 때 사용하는 프로토콜, 주소, 포트를 표현하는 객체입니다.
Java
Host brokerHost = new Host(WebProtocol.HTTP, "localhost", 8080);
생성자 매개변수
| 매개변수 | 타입 | 설명 |
|---|---|---|
protocol |
WebProtocol |
통신 프로토콜. HTTP, HTTPS 중 하나 |
address |
String |
호스트명 또는 IP 주소 |
port |
int |
포트 번호 |
Topic
토픽 이름을 담는 record입니다.
이름은 점(.)을 구분자로 하는 segment의 조합으로 구성됩니다.
Java
new Topic("order.created"); new Topic("news.world.europe");
Message
broker로 발행되거나 consumer가 수신하는 메시지를 표현하는 객체입니다.
Java
Message message = new Message( new Topic("order.created"), new OrderCreatedEvent(1L, "meringue") );
구조
| 필드 | 타입 | 설명 |
|---|---|---|
topic |
Topic |
메시지가 속한 토픽 |
content |
Object |
메시지 본문 |
TopicPattern
consumer가 어떤 토픽을 구독할지 표현하는 패턴입니다.
Java
TopicPattern pattern = new TopicPattern("order.*"); Topic topic = new Topic("order.created"); boolean matched = pattern.matches(topic); // true
매칭 규칙
Spring Framework의
AntPathMatcher를
기반으로 한 Ant 스타일 패턴을 사용합니다.
와일드카드(*, **)로 토픽의 임의 부분을 표현할 수 있습니다.
| 와일드카드 | 의미 |
|---|---|
* |
점(.)을 포함하지 않는 임의의 문자열과 매칭합니다. |
** |
점(.)을 포함한 임의의 문자열과 매칭합니다. 빈 문자열도 매칭됩니다. |
매칭 예시
| 패턴 | 토픽 | 매칭 |
|---|---|---|
sports.* |
sports.football |
O |
sports.* |
sports.basketball |
O |
sports.* |
news.politics |
X |
news.** |
news |
O |
news.** |
news.world.europe |
O |
news.** |
sports.football |
X |
order.new |
order.new |
O |