Enterprise Zaawansowany

Message-Driven Bean kontra Reactive Messaging

Zastąp JMS Message-Driven Beans MicroProfile Reactive Messaging do prostszego przetwarzania zdarzeń.

✕ 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);
    }
}
Widzisz problem z tym kodem? Daj nam znać.
🪶

Minimalny kod

Jedna metoda @Incoming zastępuje klasę MDB, interfejs MessageListener i konfigurację aktywacji.

🔌

Niezależny od brokera

Zamień Kafka, AMQP lub JMS przez konfigurację bez zmiany kodu aplikacji.

☁️

Gotowy na chmurę

Backpressure strumieni reaktywnych i lekkie środowisko uruchomieniowe są idealne dla konteneryzowanych wdrożeń.

Stare podejście
Message-Driven Bean
Nowoczesne podejście
Reactive Messaging
Od JDK
11
Poziom trudności
Zaawansowany
Message-Driven Bean kontra Reactive Messaging
Dostępne

Dostępne od MicroProfile 4.0 / SmallRye Reactive Messaging

Message-Driven Beans wymagają implementacji MessageListener, konfiguracji właściwości aktywacji i ręcznej deserializacji wiadomości JMS. MicroProfile Reactive Messaging używa prostej adnotacji @Incoming na metodzie, która bezpośrednio odbiera typowane obiekty. Konfiguracja kanału jest zewnętrzna, czyniąc kod niezależnym od brokera i znacznie łatwiejszym do testowania.