Amazon SNS主题,具有相同应用程序的多个实例



在考虑使用SNS来解耦一些应用程序时,我目前面临一个问题。

想象一个SNS主题,我有应用程序a向它发送消息,应用程序B将侦听和消费来自该主题的消息。

这个应用程序B有一个附加的自动伸缩组,所以它可以扩展到多个实例。当应用程序B扩展时,SNS将如何处理?如果现在我有2个应用程序B实例,SNS会为它们全部发送消息还是它会意识到它们是同一个应用程序,只向其中一个发送消息?

SNS想象成无线电广播:每个正在收听的人都会收到你的信息。这意味着每一个订阅的服务器都会收到通知。

另一方面,SQS更像是一个待办事项列表。许多用户也可以收听,但是每条消息都被分发到at least someone。这意味着通常只有一个服务器会被触发。如果这更适合你,那么你可以考虑使用SQS而不是SNS。

我不确定你想要的结果是什么,所以我把答案分成两部分:

a)您只想处理每条消息一次:在这种情况下,常见的模式是向SNS主题订阅一个SQS队列,然后让N个应用服务器从这个队列轮询。这样,您就可以确保只处理每条消息一次。

b)您希望在每个服务器上处理每条消息一次:在这种情况下,您可以为每个服务器创建一个SNS主题的订阅。发布到主题的每条消息将向每个订阅传递一次。

最新更新