Каковы преимущества / недостатки 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 для передачи сообщений в памяти, это не его главная сила.