Message-Driven Bean 대 Reactive Messaging
JMS Message-Driven Bean을 MicroProfile Reactive Messaging으로 대체합니다.
코드 비교
✕ Java EE
@MessageDriven(activationConfig = {
@ActivationConfigProperty(
propertyName = "destinationType",
propertyValue = "jakarta.jms.Queue"),
@ActivationConfigProperty(
propertyName = "destination",
propertyValue = "java:/jms/OrderQueue")
})
public class OrderMDB implements MessageListener {
@Override
public void onMessage(Message message) {
TextMessage txt = (TextMessage) message;
processOrder(txt.getText());
}
}
✓ MicroProfile 4+
@ApplicationScoped
public class OrderProcessor {
@Incoming("orders")
public void process(Order order) {
// automatically deserialized from
// the "orders" channel
fulfillOrder(order);
}
}
이 코드에 문제가 있나요? 알려주세요.
모던 방식이 더 나은 이유
최소 코드
단일 @Incoming 메서드가 MDB 클래스, MessageListener 인터페이스, 활성화 설정을 대체합니다.
브로커 무관
애플리케이션 코드를 변경하지 않고 설정으로 Kafka, AMQP, JMS 커넥터를 교체합니다.
클라우드 네이티브 적합
리액티브 스트림 백프레셔와 경량 런타임은 컨테이너화된 배포에 이상적입니다.
이전 방식
Message-Driven Bean
모던 방식
Reactive Messaging
JDK 버전
11
난이도
고급
JDK 지원
Message-Driven Bean 대 Reactive Messaging
사용 가능
MicroProfile 4.0 / SmallRye Reactive Messaging 이후 사용 가능
동작 원리
Message-Driven Bean은 MessageListener 구현, 활성화 설정 구성, 무거운 EJB 컨테이너가 필요합니다. MicroProfile Reactive Messaging은 어노테이션 기반 메시지 소비를 단순화합니다.
관련 문서