Kinesis - 消费者群体

时间:2016-04-08 23:12:02

标签: amazon-kinesis

我有一个用于排队任务的kinesis流,比如发送电子邮件。我有一群消费者应该读取队列,然后发送电子邮件。

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

我如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

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

其次,Kinesis可能是发送交易内容的错误架构,如电子邮件。它可能是重复的,甚至没有处理过。它不是一个可靠的队列系统。

例如,流中的每条记录都包含一封电子邮件,但让我们说其中一条记录收到错误。你会怎么做?你会把那条记录再次流式传输,重试吗?你会重试多少次? 此外,Kinesis消费者批量调查流中的记录,因此如果一批记录({"top":{ "second":{ "third0":0, "third1":"hello" } } } )中的一条记录被破坏,该批次的检查点(ProcessRecordsInput.getRecords)可能包含多个项目,包括破纪录。因此,应用程序重启可能会使您进行双重处理。

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