【问题标题】:Applying reactive technique to external system interfacing with Java将响应式技术应用于与 Java 交互的外部系统
【发布时间】:2016-06-18 08:34:23
【问题描述】:

在阅读了响应式编程 RxJava 并查看了一些在线教程后,我对它感到非常兴奋。我想在我的项目中应用它。

我的项目(比如 X)以某种方式与外部系统交互,即通过 JMS 将一些请求发送到系统 Y,直到收到响应(在可配置的持续时间内)进程停止。现在,传统上我们有一个时间监控系统,它以固定的间隔保持轮询,以检查响应是否到达,如果没有,它会通知 X 和 X 采取一些行动。但同时 Y 可以发回响应,而 X 也必须处理它。

这里涉及到竞争条件和很多并发问题,因为它涉及到 CRUD 事务,大量的簿记和所涉及对象的更新。

输入 RxJava,通过清楚地应用 Observables(在 X 和 Y 之间)和 Observers (X),这非常适合我的用例,但我希望我也可以利用一些计时器或监视行为,这样 X 就不会永远等待 Y 的响应但是收到通知响应延迟了,您不再需要等待它,另外还要记录一些关于延迟响应等的记录。

RxJava 是否提供了某种机制来计时请求和响应持续时间? 你认为 RxJava 适合我的 UC 还是你有更好的建议。

我主要关心的是处理并发,因为这个系统在并行处理响应和更新对象时会遇到很多问题。虽然 RxJava 听起来很有希望,因为它会通过允许事件序列(到达时响应)来降低并发性,但这是错误的假设吗?

注意:这不是我们在这里讨论的移动应用程序。

【问题讨论】:

    标签: java asynchronous concurrency rx-java reactive-programming


    【解决方案1】:

    当然,RxJava 非常适合您在这里想要做的事情。如果在一段时间内没有发出任何项目,Observable.timeout 将发出错误。 (这会以错误的形式向下游传播,以取消订阅的形式向上游传播,因此您可以在源头执行适当的处​​理)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-28
      • 2017-10-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多