将消息从AWS SNS发布到SQS

时间:2018-03-28 00:17:56

标签: amazon-web-services parallel-processing amazon-sqs amazon-sns

由于SQS存在限制,以支持多个消费者并行处理消息。即。 m1到m10由过程1选取,m11到m20由过程2选取,依此类推......复制。由于SQS不支持这一点,我正在考虑使用SNS + SQS(订阅的队列列表),其中每个进程都侦听其特定队列并处理记录。

是否可以选择在SNS和SQS之间设置循环,以便SNS以循环方式将消息分发到SQS,这样每个队列都会有唯一的消息,而不会在队列之间重复?

提前致谢!

此致 库马尔

2 个答案:

答案 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将来自不同消息组的消息提供给不同的消费者。