Enterprise Продвинутый

Замените JMS Message-Driven Beans на 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 vs. Reactive Messaging
Доступно

Доступно начиная с MicroProfile 4.0 / SmallRye Reactive Messaging

Message-Driven Beans требуют реализации MessageListener, настройки свойств активации и ручной десериализации JMS-сообщений. MicroProfile Reactive Messaging использует простую аннотацию @Incoming на методе, который получает типизированные объекты напрямую. Конфигурация каналов выносится наружу, делая код независимым от брокера и значительно упрощая тестирование.