Message-Driven Bean vs Reactive Messaging
Sostituisci i JMS Message-Driven Bean con MicroProfile Reactive Messaging per un'elaborazione degli eventi più semplice.
@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);
}
}
Codice minimale
Un singolo metodo @Incoming sostituisce la classe MDB, l'interfaccia MessageListener e la configurazione di attivazione.
Broker-agnostico
Cambia i connector Kafka, AMQP o JMS tramite configurazione senza modificare il codice dell'applicazione.
Adatto al cloud-native
La backpressure degli stream reattivi e il runtime leggero lo rendono ideale per i deployment containerizzati.
Disponibile da MicroProfile 4.0 / SmallRye Reactive Messaging
I Message-Driven Bean richiedono l'implementazione di MessageListener, la configurazione delle proprietà di attivazione e la deserializzazione manuale dei messaggi JMS. MicroProfile Reactive Messaging usa una semplice annotazione @Incoming su un metodo che riceve oggetti tipizzati direttamente. La configurazione del canale è esternalizzata, rendendo il codice broker-agnostico e molto più facile da testare.