Reactor 2.0 EventBus - 如何聚合和暂停处理回复

时间:2015-05-27 11:08:38

标签: java multithreading reactor project-reactor

我很感激有关如何使用EventBus在Reactor(2.X)中完成此用例的任何建议

主线程将事件调度到主题" foo"使用threadPoolExecutor。该事件可能会发生在一些已订阅" foo"的消费者身上。这些消费者检查事件数据并确定是否存在问题。

我希望主线程暂停并等待,直到满足其中一个条件:

  1. 所有消费者都会参加活动,完成运行并找不到任何问题。主线程恢复执行
  2. 其中一个消费者发现问题,主线程应该抛出异常
  3. 其中一个消费者需要太长时间才能运行,主线程应该恢复执行但是会记录警告
  4. 类似

    // dispatch event to all consumers
    notify("foo", event);
    // wait on all consumers to either finish or timeout after 100 ms
    // consumers are running on X separate threads, doing their analysis
    boolean anyErrors = waitOnConsumers(100);
    if(anyErrors){
        throw new BlockedExecutionException("A problem occurred");
    }
    

0 个答案:

没有答案