Amazon web services AWS中从SNS向SQS FIFO发送消息的替代方案是什么?

Amazon web services AWS中从SNS向SQS FIFO发送消息的替代方案是什么?,amazon-web-services,message-queue,amazon-sqs,amazon-sns,Amazon Web Services,Message Queue,Amazon Sqs,Amazon Sns,在这种情况下,我使用Amazon SNS+SQS来处理域事件 基本上,在域事件中,我向SNS发布了一条消息,两个SQS队列订阅了SNS。因为我注意到SQS支持FIFO,但SNS不支持FIFO,所以我试图找到一个解决方案,解决如何同时向多个SQS FIFO队列传递消息a的问题 到目前为止我所拥有的 将消息发布到SNS 将消息A分发给SQS 1和SQS 2 我现在能想到的就是 将消息A发布到SQS A 使用代码从SQS中提取消息A并将其发布到SQS 1和SQS 2 不是我想要的原子过程 是否

在这种情况下,我使用Amazon SNS+SQS来处理域事件

基本上,在域事件中,我向SNS发布了一条消息,两个SQS队列订阅了SNS。因为我注意到SQS支持FIFO,但SNS不支持FIFO,所以我试图找到一个解决方案,解决如何同时向多个SQS FIFO队列传递消息a的问题

到目前为止我所拥有的

  • 将消息发布到SNS
  • 将消息A分发给SQS 1和SQS 2
我现在能想到的就是

  • 将消息A发布到SQS A
  • 使用代码从SQS中提取消息A并将其发布到SQS 1和SQS 2
不是我想要的原子过程


是否有替代方法?

您可以考虑使用
AWS Kinesis数据流
。它的一个特点是
排序

常见问题解答:

什么时候应该使用Amazon Kinesis数据流,什么时候应该使用Amazon SQS

记录的排序。例如,您希望将日志数据从应用程序主机传输到处理/归档主机,同时保持日志语句的顺序


您可以处理从Kinesis到SQSs的事件。

如果您的目标是将消息推送到两个Amazon SQS FIFO队列,我建议:

  • 让亚马逊SNS触发AWS Lambda函数
  • Lambda函数可以向两个Amazon SQS队列发送相同的消息
它通过Lambda而不是SNS有效地进行扇出


Lambda函数可能还能够提取它可以与SQS消息一起提供的数据,这将启用消息的并行处理,同时在消息组中维护FIFO。例如,来自特定来源的所有消息都将是FIFO,但可以与来自其他来源的消息并行处理。这是一个非常强大的功能,仅仅让Amazon SNS转发消息是不可能的。

今天,我们推出了Amazon SNS FIFO主题,它可以将消息扇出到多个Amazon SQS FIFO队列


你到底想完成什么?有什么不适合你的吗?Amazon SNS会立即发送消息,但如果需要重新发送,消息可能会延迟。您当前的配置是否存在不符合要求的问题?简短版本是AWS不允许SQS(FIFO)订阅SNSAh!我现在明白了。您使用FIFO队列的具体原因是什么?Amazon SQS队列是先进先出的,但不能保证。您的用例是否特别要求强制执行FIFO?不幸的是,是的,因为我需要在其他系统中重新创建域。为了重新创建它,我需要使用fifo。或者,还有另一种方法可以基于消息组(例如domanid)从sns中提取消息。我知道meesage组存在于sqs fifo中,但不存在于snsSNS中,现在支持fifo