Message-Driven Bean vs Reactive Messaging
Reemplaza los Message-Driven Beans de JMS por MicroProfile Reactive Messaging para un procesamiento de eventos más simple.
@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
Un solo método @Incoming reemplaza la clase MDB, la interfaz MessageListener y la configuración de activación.
Agnóstico al broker
Intercambia conectores de Kafka, AMQP o JMS mediante configuración sin cambiar el código de la aplicación.
Apto para la nube
La contrapresión de streams reactivos y el runtime ligero lo hacen ideal para despliegues en contenedores.
Disponible desde MicroProfile 4.0 / SmallRye Reactive Messaging
Los Message-Driven Beans requieren implementar MessageListener, configurar propiedades de activación y deserializar manualmente los mensajes JMS. MicroProfile Reactive Messaging usa una simple anotación @Incoming en un método que recibe objetos tipados directamente. La configuración del canal se externaliza, haciendo el código agnóstico al broker y mucho más fácil de probar.