有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无限轮询数据库并以非阻塞方式发送结果

问题陈述:观察并发布(外部)更改(按上次更新时间戳),该更改从具有Spring反应堆栈的Oracle数据库的给定时间戳(from)之后开始

我的想法:

  1. 创造流量
  2. 创建一个数据库游标(选择*from foo,其中f.timestamp>;from)
  3. 订阅时开始(冷可观察) 当光标没有更多值时结束
  4. 等一段时间
  5. 从最新发出的值开始,在最后一个时间戳之后重复所有步骤

我失败的地方:我知道如何使用通量周期性地创建通量。间隔以及如何使用流量生成状态感知(状态=时间戳)流量。生成,但不生成如何组合它们


共 (1) 个答案

  1. # 1 楼答案

    您可以使用delayElements并将其与现有的有状态生成相结合

    Flux.generate(sink -> sink.next(new Date()))
        .delayElements(Duration.ofMillis(5000));
    

    延迟控制GERNATE函数的执行频率,因此订阅并记录该函数将产生:

    Tue Apr 24 16:24:41 BST 2018
    Tue Apr 24 16:24:46 BST 2018
    Tue Apr 24 16:24:51 BST 2018
    Tue Apr 24 16:24:56 BST 2018
    Tue Apr 24 16:25:01 BST 2018
    ...
    

    这是为了用间隔图案取代拉链而设计的。有关更多信息,请参阅javadoc