amazon-web-services - 使用哪个 aws 消息服务
问题描述
我正在做一个需要处理消息的项目。现在,每条消息都与具有唯一 consumerId 的消费者相关联。我的要求是我希望一个唯一的 consumerId 的所有消息都被一一处理。即对于给定的consumerId,只有一个消费者应该处理消息。
aws 是否提供任何满足我条件的消息传递服务?
解决方案
这听起来像是 Amazon Kinesis Data Stream 的一个很好的使用模式。
可以为 Kinesis Data Stream 分配多个分片。将每个分片视为一个单独的消息队列,其中每条消息都按接收顺序保存。
将消息发送到 Kinesis Data Stream 时,您需要提供一个经过哈希处理的分区键,然后用于确定将消息发送到哪个分片。如果您只有一个分片,则所有消息都会进入该分片。如果您有 10 个分片,那么只要分区键有足够的多样性,消息就会被分配到最多 10 个队列。
然后可以使用您自己的工作人员(例如在 Amazon EC2 实例上运行)使用这些消息,或者流可以自动触发AWS Lambda 函数。
这是相关位的来源......您的工作人员(或 Lambda 函数)将一次处理来自给定 shard 的一条消息。只有当该消息被处理后,它才会从同一个分片中拉出另一条消息。这意味着来自相同的消息consumerId
(如分区密钥所示)将始终按照它们到达的顺序进行处理。
可以将其想象为人们被分配到Bank 中的队列,其中队列按名称(AK,LZ)分配。使用此方法,一个人将始终被发送到同一个队列,每个队列将仅由一名银行柜员处理。
推荐阅读
- python - 无法连接到 websocket API
- python - from tkinter import * 在函数内部使用时显示 SyntaxError
- sql - 加入一对多关系以根据条件排除某些行
- c++ - 如何正确清理 Vulkan 对象?
- dotnetnuke - 2sxc 11.07 LTS 的错误消息,与服务器通信时出错(状态 405)
- postgresql - 添加另一列查询时子查询很慢
- ubuntu - 执行一个shellcode,/bin/sh
- wpf - WPF 动画仅在一个方向上起作用
- android - React Native - 存储 api 密钥
- python - QT 小部件的实时变化?