【问题标题】:Which aws messaging service to use使用哪个 aws 消息服务
【发布时间】:2020-03-13 11:35:39
【问题描述】:

我正在处理一个需要处理消息的项目。现在,每条消息都与具有唯一 consumerId 的消费者相关联。我的要求是我希望一个唯一的 consumerId 的所有消息都被一一处理。即只有一个消费者应该为给定的 consumerId 处理消息。

aws 是否提供任何符合我条件的消息传递服务?

【问题讨论】:

  • 你可以通过配置Visibility Timeout来尝试SQS
  • 有多少消费者?如果数量很少,您可能希望每个消费者使用自己的 SQS 队列。或者,您也可以使用 SNS,每个消费者有一个主题。

标签: amazon-web-services message-queue


【解决方案1】:

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

可以为 Kinesis Data Stream 分配多个分片。将每个分片视为一个单独的消息队列,其中每条消息都按接收顺序保存。

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

这些消息随后可以由您自己的工作人员使用(例如在 Amazon EC2 实例上运行),或者流可以自动触发 AWS Lambda 函数

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

可以将其想象为人们被分配到银行中的队列,其中队列按名称(A-K、L-Z)分配。使用这种方法,一个人总是会被送到同一个队列,每个队列只会由一个银行柜员处理。

【讨论】:

  • 谢谢约翰。我将深入了解 Amazon Kinesis
猜你喜欢
  • 2017-08-01
  • 2017-12-07
  • 2018-07-27
  • 1970-01-01
  • 2020-08-25
  • 2017-11-13
  • 2016-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多