Message-Driven Bean kontra Reactive Messaging
Zastąp JMS Message-Driven Beans MicroProfile Reactive Messaging do prostszego przetwarzania zdarzeń.
@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);
}
}
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ń.
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.