制造风暴喷口等待螺栓准备就绪

6uxekuva  于 2021-06-21  发布在  Storm
关注(0)|答案(3)|浏览(697)

目前,风暴喷口有一个开放的方法来配置他们和螺栓有一个准备方法。有没有办法让所有的喷口示例等待螺栓上所有的准备方法,听他们说完?
我有一个例子,我想传递一些配置信息的螺栓在飞行中(因为这个配置信息改变了所有的时间)。我在一些地方读到过,我们应该使用zookeeper或redis之类的内存键值存储来实现这一点。不过,我担心的是,如果螺栓还没有准备好处理来自喷口的数据,喷口开始发出元组,会发生什么?有没有办法让喷口等待螺栓的更新,说他们准备好了?

voase2hg

voase2hg1#

是的,您可以使用redis存储配置,然后从 prepare 方法。
这个 prepare 方法由工作进程调用,工作进程在完成后开始处理元组。实际上,我认为在工作进程的所有组件就绪之前,不会发出元组。http://nathanmarz.github.io/storm/doc-0.8.1/index.html
最后,您可以有一个额外的喷口来查找配置更改。然后,如果有新的配置可用,它将通过命名流发送给您的螺栓。

wfveoks0

wfveoks02#

你不用担心这个。风暴框架在喷口前加载螺栓。风暴以相反的顺序加载螺栓。在拓扑中间的螺栓之前加载拓扑末端的螺栓,最后加载喷口。

vmjh9lq9

vmjh9lq93#

我找到了一个更优雅的解决方案。问题是某些bolt需要配置信息来处理传入的元组。我发现了storm重放元组的能力,所以现在我的螺栓会从一个喷口监听更新,从另一个喷口监听元组。只要我没有收到更新,我就会不断失败元组,并让喷口在一段可配置的时间后重放它们。

相关问题