【发布时间】:2016-11-13 02:40:36
【问题描述】:
我最近一直在 AWS 中试用 Apache Storm。我创建了一个 SQS spout,它从 SQS 读取并传递给要插入到 db 的 Cassandra 螺栓。 当数据库插入成功时,将发回确认并从 SQS 中删除消息。但是当并行提示增加时,一条消息被插入不止一次。可能是因为在确认返回到 spout 之前,另一个线程已经从 SQS 读取了相同的消息。我该如何处理这种情况?如果没有并行性,速度会很慢。
【问题讨论】:
-
我对 SQS 不熟悉,但是您需要“阻止”两次读取数据(您可以使用像 Apacha Kafka 中的偏移量吗?)。或者您可以设置一个全局“标志”。当消息被完全处理(连同消息本身)或消息在 Storm 中失败时(即,只需删除标志以允许再次读取消息),应该删除这个“阻塞”标志。如果 SQS 不为此提供任何支持,则您的 spout 需要一个(可扩展的)分布式同步机制(即分布式哈希表或类似的)
标签: amazon-web-services apache-storm amazon-sqs