由于SQS存在限制,以支持多个消费者并行处理消息。即。 m1到m10由过程1选取,m11到m20由过程2选取,依此类推......复制。由于SQS不支持这一点,我正在考虑使用SNS + SQS(订阅的队列列表),其中每个进程都侦听其特定队列并处理记录。
是否可以选择在SNS和SQS之间设置循环,以便SNS以循环方式将消息分发到SQS,这样每个队列都会有唯一的消息,而不会在队列之间重复?
提前致谢!
此致 库马尔
答案 0 :(得分:1)
如果您不希望SNS发布转到所有订阅者(队列),请查看SNS Message Filtering。消息过滤允许您定义控制哪些订阅者接收给定消息的逻辑。
默认情况下,Amazon SNS主题的订阅者会收到每条消息 发表于该主题。要仅接收消息的子集,a subscriber为主题订阅分配过滤策略。
过滤策略是一个简单的JSON对象。该政策包含 定义订阅者接收哪些消息的属性。什么时候 您向主题发布消息,Amazon SNS会比较该消息 属性为每个过滤策略中的属性 主题的订阅。如果属性之间存在匹配, Amazon SNS将消息发送给订户。否则,亚马逊SNS 跳过订阅者而不向其发送消息。如果一个 订阅缺少过滤策略,订阅接收每个 消息发布到其主题。
答案 1 :(得分:1)
除非您使用的是SQS FIFO队列,否则您对不支持多个并行用户的SQS限制的假设是不正确的
标准SQS支持多个并行消费者。
关于SQS FIFO队列,它们不会一次将来自同一消息组的消息提供给多个消费者。但是,如果您的FIFO队列有多个消息组,您可以利用并行消费者,允许Amazon SQS将来自不同消息组的消息提供给不同的消费者。