每次消费都具有唯一值的消费流
Consume stream with unique values for each consume
我已将其定义为全局:
Processor<Integer, Integer> p = RingBufferProcessor.create("test", 32);
Stream<List<Integer>> s = Streams.wrap(p).distinct().buffer(5, TimeUnit.SECONDS).log().unbounded();
关于构造函数:
s.consume(i -> System.err.println(Thread.currentThread() + " data=" + i));
现在我调用这个函数两次:
for (int i = 0; i < 1000; i++) {
p.onNext(i % 3);
}
不同的工作正常,我第一次消费。当我再次调用此方法时,他仍然记得 distinct 并且不会触发消费。
是否有任何选项可以在我们每次消费后清除不同的。我需要实现的想法是我将缓冲所有输入并且每次我将只消耗唯一的项目..
有人知道吗?
Tnx
经过深入搜索,我得出的结论是我认为这不是一个选择。我设法做的是,当我消费时,我正在转换为 Set。这样每次流消耗时我只处理唯一值
我已将其定义为全局:
Processor<Integer, Integer> p = RingBufferProcessor.create("test", 32);
Stream<List<Integer>> s = Streams.wrap(p).distinct().buffer(5, TimeUnit.SECONDS).log().unbounded();
关于构造函数:
s.consume(i -> System.err.println(Thread.currentThread() + " data=" + i));
现在我调用这个函数两次:
for (int i = 0; i < 1000; i++) {
p.onNext(i % 3);
}
不同的工作正常,我第一次消费。当我再次调用此方法时,他仍然记得 distinct 并且不会触发消费。
是否有任何选项可以在我们每次消费后清除不同的。我需要实现的想法是我将缓冲所有输入并且每次我将只消耗唯一的项目..
有人知道吗?
Tnx
经过深入搜索,我得出的结论是我认为这不是一个选择。我设法做的是,当我消费时,我正在转换为 Set。这样每次流消耗时我只处理唯一值