响应式编程和消息队列之间的区别

Sam*_*Sam 2 java queue jms reactive-programming

这些天,我忙于反应式概念。我已经了解了两个独立的概念,即反应式系统反应式编程。此外,我知道反应式系统是一个较大的概念,其中包含四个属性:

  1. 反应灵敏
  2. 弹性的
  3. 可扩展
  4. 事件驱动

在此处输入图片说明

图像参考:medium.com

我的问题是关于响应式编程的,我知道它的目标是通过Observable / Subscriber模型进行异步编程。 在此处输入图片说明

图片参考:https//hub.packtpub.com/introduction-reactive-programming/

现在,我对反应式编程Message Queue之间的区别感到困惑。我在面向消息的中间件和相关标准(例如JMS)方面有一些经验,我认为在侦听器模式而非阻塞模式下使用消息传递队列的反应式编程是相同的。

我想在反应式编程的真正概念中变得清晰。

Axe*_*ehl 5

响应式编程是旧概念的新名称。这意味着与请求-响应计算相比,更喜欢事件驱动的计算。或“推”与“拉”。因此,您可以定义在发生某些情况时执行的回调,而不是编写等待某些情况到达的代码。该Observer模式是反应式编程的一个很好的例子,所以是好莱坞原则(“不要给我们打电话,我们会打电话给你”)。

用JMS术语来说,如果您在使用者上定义了MessageListener,则您正在执行反应式编程: MessageConsumer.setMessageListener(MessageListener listener)

然后,您的API或其他代码可以确定在此期间要处理的内容,以及是否有消息从队列或主题到达而调用了该回调。

使用的替代方法MessageConsumer.receive(long timeout)不是反应式编程。您正在阻止当前线程,直到收到下一条消息。

以事件驱动或反应方式进行思考有时会花费一些时间,但是值得付出努力。

当查看系统本身时,我会认为以主题为基础的基础架构是反应式系统。没有使用队列构建的基础结构。