首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >移动-消费者集群

移动-消费者集群
EN

Stack Overflow用户
提问于 2016-04-08 23:12:01
回答 1查看 348关注 0票数 0

我有一个运动流,用来排任务队列,比如发送电子邮件。我有一群消费者,他们应该阅读队列,然后发送电子邮件。

在这种情况下,如果消费者从队列中读取某一项,则其他消费者不应读取同一项;另一项我将发送重复的电子邮件。

我怎样才能做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-26 08:56:46

首先,将KCL用于Kinesis消费者应用程序。如您所知,流中的记录将位于特定的碎片中,通过使用KCL,您可以保证只有一个使用者节点(在应用程序中)轮询该碎片。因此,不存在双重侦听相同的碎片(因此处理相同的记录)的风险。

其次,Kinesis可能是发送诸如电子邮件之类的事务性信息的错误架构。它可能会被复制,甚至不会被处理。这不是一个可靠的排队系统。

例如,流中的每条记录都包含一封电子邮件,但假设在发送其中一个收到错误的记录时。你怎么做?你会把那一张唱片再流一遍吗,再试一次?你要再试几次?而且,Kinase使用者批量地从流中轮询记录,因此,如果一批记录(ProcessRecordsInput.getRecords)中的一条记录被破坏,则该批记录(ProcessRecordsInput.getCheckpointer)的检查点可能包含多个项,包括已损坏的记录。因此,重新启动应用程序将使您面临双重处理的风险。

我建议使用基于队列的系统(HornetQ、ActiveMQ等)在用例中会更好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36510764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档