能否将AWS SNS和AWS SQS FIFO队列集成?

20

通过在SQS中引入了FIFO队列,我们可以保证SQS消息会按顺序传递。

现在,如果我通过SNS发布消息,是否可能出现无序传递?我正在考虑可能发生的情况:

 _____                       _____                       __________
| App |-- Publish msg 1 --> | SNS | --> Queue msg 2 --> | FIFO SQS | --> Consume 2
|     |-- Publish msg 2 --> |     | --> Queue msg 1 --> |          | --> Consume 1
 -----                       -----                       ----------

那种情况可能吗?


2
SNS甚至不支持发布到FIFO队列。 - Mark B
@MarkB 我明白了。所以先进先出队列只支持直接发布吗? - jlhonora
3
呃,"Amazon SNS 目前不支持与 FIFO 队列兼容。" - wrschneider
你有在做这个吗?我尝试了这个链接“https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-subscribe-queue-sns-topic.html”,但仍然无法订阅 SQS Fifo。 - user2627846
可以实现 参考 - Prasanth Rajendran
4个回答

20

目前这种情况不可能发生,因为SNS与AWS中的FIFO SQS不兼容。它仅支持标准队列。在此链接的AWS文档中明确提到了这一点。

编辑

这也在SNS常见问题解答中列出,在Amazon SQS FIFO队列是否与Amazon Simple Notification Service (SNS)兼容?部分。

截至2020年7月26日,答案仍然是一样的:Amazon SNS目前不支持将消息转发到Amazon SQS FIFO队列。您可以使用SNS将消息转发到标准队列。


1
链接在哪里? - LLL
2
链接已添加。对不起给您带来的不便。 - Keet Sugathadasa
有进展了吗?我猜AWS正在努力实现这个功能?我该如何在哪里追踪这个进展? - ielkhalloufi
@G.Mast,目前AWS还不支持此功能。请注意,FIFO队列目前不受支持。不知道是否已经有人与他们联系过这个问题。如果有人需要,可以通过开发者论坛请求功能:https://forums.aws.amazon.com/forum.jspa?forumID=4 - Keet Sugathadasa
4
现在可以实现了。https://aws.amazon.com/blogs/aws/introducing-amazon-sns-fifo-first-in-first-out-pub-sub-messaging/ - Ala' Alkhaldi
显示剩余2条评论

17

6
答案仍然是否定的。您可以将 SQS FIFO 队列订阅到 SNS FIFO 主题,但无法将 SQS FIFO 队列订阅到 SNS 主题。 - villasv
@villasv 为什么要使用 FIFO 队列(有序保证)来订阅 SNS 主题(无序保证)。SNS FIFO 主题具有不同的架构、限制和定价,将这两者固定在一起是没有意义的。如果您的系统需要严格的排序用例,请使用 FIFO 主题。 - Marc Yu Yang
2
因为SQS FIFO队列具有基于内容的去重功能,所以即使传递顺序不重要,也被选择了。这是一个好决定吗?也许不是,但这是另一个讨论。OP并不是在问这是否是一个好的架构,他在问它是否可能。“只需使用FIFO主题”并不是一个有用的答案。 - villasv

4

最新的SNS支持FIFO,可以实现以下内容:

FIFO主题支持将消息扇出到多个订阅,具有高耐久性、过滤、加密和隐私性,而FIFO主题则提供了消息排序和去重的附加优势

我为您列出了一些重要链接供参考:

  1. Amazon SNS介绍了具有严格顺序和去重消息的先进先出(FIFO)主题
  2. 介绍Amazon SNS FIFO-先进先出发布/订阅消息传递
  3. 使用Amazon SNS FIFO构建事件驱动的体系结构

由于您的SNS主题协议端点是完美运作的Amazon SQS。

其他协议端点的注意事项 Ref

  • 目前,端点协议必须是Amazon SQS,并且使用Amazon SQS FIFO队列的Amazon资源名称(ARN)作为端点。
  • SNS FIFO主题无法将消息传递到客户管理的端点,例如电子邮件地址、移动应用程序、文本消息(短信)的电话号码或HTTP(S)端点。这些端点类型不能保证严格的消息顺序。尝试订阅客户管理的端点到SNS FIFO主题会导致错误。

0

我的团队也在寻找与SQS FIFO队列的SNS集成,但不幸的是目前还不兼容。


1
SNS FIFO 刚刚推出。SNS 现在可以与 SQS FIFO 集成 https://aws.amazon.com/blogs/aws/introducing-amazon-sns-fifo-first-in-first-out-pub-sub-messaging/ - jlhonora
可以实现,更多信息请参考答案 - Prasanth Rajendran

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接