Каковы преимущества / недостатки javax.enterprise.event по сравнению с org.eclipse.microprofile.reactive.messaging?

Я пытаюсь изучить реактивное программирование / обмен сообщениями с помощью QUARKUS и SmallRye. Но мне все еще трудно понять преимущества org.eclipse.microprofile.reactive.messaging перед javax.enterprise.event, если есть?

С одной стороны:

@Inject
MyEvent Event<String> myEvent;

public void someFunc(){
myEvent.fire("blabla");
}

//Elsewhere in the code :
public void aConsumer(@Observes @MyEvent String ev){
 //an event saying blabla has been received :)
}

На другой стороне:

@Inject
@Channel("myChannel")
Emitter<String> msgEmitter;

public void someFunc(){
msgEmitter.send("blabla");
}

//Elsewhere in the code :
@Incoming("myChannel")
public void aConsumer(String ev){
 //an event saying blabla has been received :)
}

Я могу что-то упустить....

1 ответ

Основное отличие состоит в том, что события CDI (javax.enterprise.event) являются чисто внутрипроцессными, в то время как с помощью Reactive Messaging вы можете получать сообщения из / создавать сообщения для внешних систем обмена сообщениями (таких как Kafka, ActiveMQ Artemis и т. д., используя различные протоколы, такие как AMQP, MQTT и т. д.). Хотя можно использовать Reactive Messaging для передачи сообщений в памяти, это не его главная сила.

Другие вопросы по тегам