Message-Driven Bean vs Reactive Messaging
Substitua Message-Driven Beans JMS por MicroProfile Reactive Messaging para processamento de eventos mais simples.
@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());
}
}
@ApplicationScoped
public class OrderProcessor {
@Incoming("orders")
public void process(Order order) {
// automatically deserialized from
// the "orders" channel
fulfillOrder(order);
}
}
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.
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.