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
/