使用哪种AWS消息传递服务

时间:2019-11-18 06:05:49

标签: amazon-web-services message-queue

我正在一个需要处理消息的项目中工作。现在,每个消息都与具有唯一consumerId的消费者相关联。我的要求是,我希望一个唯一的consumerId的所有消息都被一个一个地处理。也就是说,只有一个消费者可以处理给定消费者ID的消息。

aws是否提供满足我条件的任何消息服务?

1 个答案:

答案 0 :(得分:0)

这听起来像是Amazon Kinesis Data Stream的良好使用模式。

可以为Kinesis数据流分配多个分片。可以将每个分片视为一个单独的消息队列,其中每个消息按接收顺序进行保存。

将消息发送到Kinesis Data Stream时,您需要提供分区键,该键会被散列,然后用于确定将消息发送到哪个分片。如果只有一个分片,则所有消息都将进入该分片。如果您有10个分片,那么只要分区键的种类足够多,就可以将消息分配给最多10个队列。

然后可以与您自己的工作程序一起使用消息(例如,在Amazon EC2实例上运行),或者流可以自动触发 AWS Lambda函数

相关位在这里...您的工作程序(或Lambda函数)将一次处理给定分片中的一条消息。只有在处理完该消息后,它才会从同一分片中提取另一条消息。这意味着来自同一consumerId的消息(如分区键所示)将始终按照到达的顺序进行处理。

可以想像人们被分配到银行中的队列,其中队列是通过名称(A-K,L-Z)分配的。使用此方法,始终会将一个人发送到同一队列,并且每个队列将仅由一个银行出纳员处理。