JMS 与反应式流有何不同?

Sha*_*P S 4 jms reactive-programming

我正在学习 API 中的反应流,它与 JMS 之间的相似性让我感到震惊。在 JMS 中,我们也有异步处理、发布者和订阅者。在做出这种等价时我缺少什么视角?

Wat*_*Wat 5

Reactive Streams 是面向背压的,JMS 是面向消息的。尽管您可以使用 JMS 进行背压。

阻塞 API(非反应式)

java.util.concurrent.Future::get<->javax.jms.MessageConsumer.receive

非阻塞API

org.reactivestreams.Publisher::subscribe<-> javax.jms.MessageConsumer::setMessageListener org.reactivestreams.Subscriber::onNext<->javax.jms.MessageListener::onMessage

反压 API <-> 消息 API

org.reactivestreams.Subscription::request<->javax.jms.MessageProducer::send

初始化/终结/错误处理

org.reactivestreams.Subscriber::onSubscribe<-> javax.jms.MessageListener::onMessage org.reactivestreams.Subscriber::onError<-> javax.jms.MessageListener::onMessage org.reactivestreams.Subscriber::onComplete<-> javax.jms.MessageListener::onMessage org.reactivestreams.Subscription::cancel<->javax.jms.MessageProducer::send