RxJava 2检测未消耗的元素

时间:2017-11-13 20:09:55

标签: java rx-java2

我是RxJava的新手,所以希望这是有道理的。

我正在使用RxJava改造旧的排队系统。结构是我们有一个数据库表,有一堆要运行的作业。

我想要发生什么:

  • 轮询数据库以获取新工作。
  • 将传入的作业过滤/平面映射到关心这些作业类型的处理器
  • 以适当的方式处理这些工作
  • 注销错误和未处理的作业。

这是我到目前为止所拥有的

    Flowable<Job> jobQueue = Flowable.interval(500, TimeUnit.MILLISECONDS, Schedulers.io())
            .onBackpressureDrop()
            .flatMapIterable((l)->dao.getNextSetOfJobs(100), 1000)
            .retry(5);

    jobQueue.flatMap((t) ->
    {
        if ("myJob".equals(t.getJobType()))
        {
            return Flowable.just("rightJob");
        }
        else
            return Flowable.empty();
    }).subscribe((v)->System.out.println(v));

    jobQueue.flatMap((t) ->
    {
        if ("myOtherJob".equals(t.getJobType()))
        {
            return Flowable.just("rightJob");
        }
        else
            return Flowable.empty();
    }).subscribe((v)->System.out.println(v));

所以我的问题。

  • 如何处理下游未处理JobType的情况?
  • 这是订阅的正确方法吗?也就是说,过滤/平面化我关心的作业,然后将它们推入处理“正确”的处理器。
  • 我应该重播和过滤吗?
  • 我应该阅读或申请其他图案或书籍吗?

有关如何执行此操作的任何建议将不胜感激。

0 个答案:

没有答案