Message-Driven Bean vs Reactive Messaging
Remplace les Message-Driven Beans JMS par MicroProfile Reactive Messaging pour un traitement d'événements plus 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);
}
}
Code minimal
Une seule méthode @Incoming remplace la classe MDB, l'interface MessageListener et la configuration d'activation.
Agnostique au broker
Échangez les connecteurs Kafka, AMQP ou JMS via la configuration sans changer le code de l'application.
Adapté au cloud
La contre-pression de streams réactifs et le runtime léger le rendent idéal pour les déploiements en conteneurs.
Disponible depuis MicroProfile 4.0 / SmallRye Reactive Messaging
Les Message-Driven Beans nécessitent d'implémenter MessageListener, de configurer les propriétés d'activation et de désérialiser manuellement les messages JMS. MicroProfile Reactive Messaging utilise une simple annotation @Incoming sur une méthode qui reçoit des objets typés directement. La configuration du canal est externalisée, rendant le code agnostique au broker et beaucoup plus facile à tester.