您可以让您的应用程序扇出而不是 SNS 扇出吗?

Can you let your application fan-out instead of SNS fan-out?

我目前有一个向 SNS 主题发送消息的应用程序。并且有 3 个 SQS 队列订阅了该主题。由于成本原因,我试图从我的架构中消除 SNS 的使用。在不使用 SNS 的情况下,我的应用程序本身是否可能像 SNS 和扇出消息一样运行到 SQS?如果有任何缺点,那是什么?

当然你可以让你的应用程序这样做,SNS 只是在幕后调用 sqs:SendMessage API 并确保它得到积极的回应,但有明显的缺点:

  • 您必须维护要向其发送消息的队列列表,从而引入紧密耦合
  • 您必须确保将消息发送到 所有 队列,并在间歇性 API 故障
  • 的情况下处理重试

向一个 SNS 主题发送消息很可能比为任意数量的 SQS 队列编写和维护代码更快并且更简单。

SNS 是有价格的,开发人员也是。构建和维护您自己的解决方案需要成本——初始成本和持续成本。如果从商业角度来看这有意义,那就去做吧。