繁体   English   中英

Storm中的延迟队列/消息处理

[英]Delayed queue / message processing in Storm

在我的Storm拓扑中,在处理流时,我想延迟处理某些消息,直到将来某些时间点。 这样做的合理选择是什么?

到目前为止,我已经考虑过以下几点:

  • 使用Java的Thread.sleep (但是,根据一些讨论,这不是有效利用Storm资源的推荐方法。)
  • 使用延迟队列......
  • Storm是否有一些API来延迟我忽略的消息?
  • ZeroMQ是否提供Storm(如果已修改)可以利用的延迟消息传递API?

我们使用拓扑结构元组来批量处理挂起的元组。 它基本上只是将它们存储在每个正常元组的内存中,当它收到一个tick元组时,它使用批量/流水线处理将它们处理成存储/索引。

如果卷的峰值检测到所有元组都重定向到每个主机上的本地redis存储,然后在卷停止后被推回拓扑处理,我们也会在数量激增的情况下使用redis。 我们的情况可能不适用于你的,只是我的2c。

使用外部消息队列来实现延时队列。

由于Storm是容错的并且是水平分布的,因此选择适合该样式的消息队列是有意义的,例如:

  • 卡夫卡
  • 亚马逊SQS
  • 的RabbitMQ

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM