Enterprise Avançado

Substitua Message-Driven Beans JMS por MicroProfile Reactive Messaging para processamento de eventos mais simples.

✕ 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);
    }
}
Viu um problema com este código? Nos avise.
🪶

Código mínimo

Um único método @Incoming substitui a classe MDB, a interface MessageListener e a configuração de ativação.

🔌

Agnóstico ao broker

Troque conectores Kafka, AMQP ou JMS via configuração sem alterar o código da aplicação.

☁️

Ideal para a nuvem

Backpressure de reactive streams e runtime leve tornam-no ideal para deploys em containers.

Abordagem Antiga
Message-Driven Bean
Abordagem Moderna
Reactive Messaging
Desde o JDK
11
Dificuldade
Avançado
Message-Driven Bean vs Reactive Messaging
Disponível

Disponível desde o MicroProfile 4.0 / SmallRye Reactive Messaging

Message-Driven Beans exigem implementar MessageListener, configurar propriedades de ativação e desserializar mensagens JMS manualmente. O MicroProfile Reactive Messaging usa uma simples anotação @Incoming em um método que recebe objetos tipados diretamente. A configuração do canal é externalizada, tornando o código agnóstico ao broker e muito mais fácil de testar.

Compartilhar 𝕏 🦋 in