Enterprise Avancé

Remplace les Message-Driven Beans JMS par MicroProfile Reactive Messaging pour un traitement d'événements plus simple.

✕ 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);
    }
}
Un problème avec ce code ? Dites-le nous.
🪶

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.

Ancienne Approche
Message-Driven Bean
Approche Moderne
Reactive Messaging
Depuis JDK
11
Difficulté
Avancé
Message-Driven Bean vs Reactive Messaging
Disponible

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.

Partager 𝕏 🦋 in