【发布时间】:2016-05-24 22:25:34
【问题描述】:
我有一个风暴拓扑来处理来自 Kafka 的消息,并根据手头的任务在 Cassandra 中进行 HTTP 调用/保存。我一收到消息就处理它们。由于响应来自外部源(例如 HTTP),很少有消息没有被完全处理。我想为重试实现指数退避机制,以防 HTTP 服务器不响应/返回错误消息以在一段时间后重试。我可以想出一些可以用来实现它们的想法。如果有任何其他我可以使用的容错解决方案,我想知道它们中的哪一个将是一个更好的解决方案。由于这用于实现指数退避,因此每条消息都会有不同的延迟时间。
- 在 Kafka 中发送另一个主题,稍后使用。 我的首选解决方案。我知道我们可以使用 Kafka 偏移量,以便在后期使用消息。我怎么找不到文档/示例代码来做同样的事情。如果有人能帮我解决这个问题,那将非常有帮助。
- 编写消息 Cassandra / Redis 并编写调度程序以获取未处理且准备好使用的消息并将其发送到 Kafka,以便我的风暴拓扑可以使用它。 (其他遗留项目中的现有解决方案(非 Storm))
- 延迟发送到 Beanstalk(其他遗留项目中的现有解决方案(非风暴)。我想避免使用此解决方案,仅在我没有选择的情况下使用它)。
虽然这几乎是我想做的。如Kafka - Delayed Queue implementation using high level consumer 中所述,我无法找到实施 delayProcessingUntil 的文档
我过去曾使用 Beanstalk 从 Data-store 完成预定工作,但我更喜欢使用 Kafka。
【问题讨论】:
标签: java message-queue apache-kafka apache-storm delayed-execution