Enterprise 고급

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
난이도
고급
Message-Driven Bean 대 Reactive Messaging
사용 가능

MicroProfile 4.0 / SmallRye Reactive Messaging 이후 사용 가능

Message-Driven Bean은 MessageListener 구현, 활성화 설정 구성, 무거운 EJB 컨테이너가 필요합니다. MicroProfile Reactive Messaging은 어노테이션 기반 메시지 소비를 단순화합니다.

공유 𝕏 🦋 in