2017-03-09 16 views
1

我正在學習API中的Reactive Streams,我對此和JMS之間的相似性感到震驚。在JMS中,我們也有異步處理,發佈者和訂閱者。我在做這種對等時缺少什麼樣的觀點?JMS與Reactive Streams有何不同?

回答

2

爲了使流動成爲反應性的,它應該能夠應用背壓。 (請參閱this initiative。)

JMS不支持該功能。主題發佈者或隊列發送者從未被通知下游障礙物,因此將無法做出適當的反應。

1

反應流是反壓力導向的,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