我研究和阅读文件并不是很容易理解。 我想要实现的是以下功能:
我正在使用Spring Reactor项目并使用eventBus。我的事件总线向模块A投掷事件。
模块A应该接收事件并插入到将保存唯一值的热流中。每250个Milisecons流应该提取所有价值并对它们进行计算......等等。
例如: eventBus抛出的事件编号为:1,2,3,2,3,2
Stream应该获取并保持唯一值 - > 1,2,3 在250毫秒之后,流应该打印数字和空值
任何人都知道如何开始?我尝试了这些例子,但没有什么真正起作用,我想我不明白。有人有例子吗?
TNX
编辑:
当试图做下一个时,我总是得到例外:
Stream<List<Integer>> s = Streams.wrap(p).buffer(1, TimeUnit.SECONDS);
s.consume(i -> System.out.println(Thread.currentThread() + " data=" + i));
for (int i = 0; i < 10000; i++) {
p.onNext(i);
}
例外:
java.lang.IllegalStateException: The environment has not been initialized yet
at reactor.Environment.get(Environment.java:156) ~[reactor-core-2.0.7.RELEASE.jar:?]
at reactor.Environment.timer(Environment.java:184) ~[reactor-core-2.0.7.RELEASE.jar:?]
at reactor.rx.Stream.getTimer(Stream.java:3052) ~[reactor-stream-2.0.7.RELEASE.jar:?]
at reactor.rx.Stream.buffer(Stream.java:2246) ~[reactor-stream-2.0.7.RELEASE.jar:?]
at com.ta.ng.server.controllers.user.UserController.getUsersByOrgId(UserController.java:70) ~[classes/:?]
正如您所看到的,如果不通过此问题,我就无法继续尝试。
顺便说一下:只有当我使用buffer(1, TimeUnit.SECONDS)
时,才会发生这种情况。例如,如果我使用buffer(50)
,它就会起作用。虽然这不是最终的解决方案但它的开始。
答案 0 :(得分:0)
再次阅读doc后我错过了这个:
static {
Environment.initialize();
}
这解决了这个问题。 TNX