【问题标题】:How to create a topic in Amazon Sqs/Sns如何在 Amazon Sqs/Sns 中创建主题
【发布时间】:2020-08-03 12:47:02
【问题描述】:

我有一个将一些数据(json)发布到 Aws-Sqs 上的队列的过程。另一个进程从这个队列中读取。所有这一切都很好。

现在我想创建一个可以被多个进程监听的主题,并将数据传递给所有进程。例如 Activemq 和许多其他消息传递服务器具有创建主题的能力。我在 AWS 上找不到任何这样的东西。我能找到的最接近的是 AWS SNS。

据我了解,AWS-SNS 允许多个客户端订阅一个主题。但是订阅的类型要么是电子邮件,要么是 Http,要么是 Sms 等等……这并不真正符合我的目的。我想在我的所有客户中接收 json 数据,就像 Sqs 一样。

这可以实现吗?如果有怎么办?

【问题讨论】:

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


    【解决方案1】:

    amazon mq 是一种托管的活动 mq 服务。也许这会对您的需求有所帮助?

    【讨论】:

      【解决方案2】:

      您可以将多个 SQS 订阅到单个 SNS 主题:https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-subscribe-queue-sns-topic.html

      然后分发给所有的人。

      另一种选择是使用 Kinesis - https://aws.amazon.com/kinesis/,但设置起来更加困难。在那里,您还可以从流中读取多个客户端。

      【讨论】:

      • 感谢您的回答,但要使其正常工作,我必须先在 sqs 中创建多个队列。这没有道理。因为如果我必须创建多个队列,那么一个主题的目的是什么。我可以将自己发布到所有队列
      • @pvpkiran - 当然,您必须创建多个 SQS 队列,每个客户端都需要具有可以处理的唯一“消息存储”。目的是有一个中心点(SNS 主题),您可以在其中发布消息并将其分发给所有订阅(在您的情况下为 SQS)。当您再添加一个消费者时,您只需将其订阅到 SNS 主题。如果您自己发布所有消息,则必须自己完成所有逻辑。究竟是什么阻碍了您为每个客户端创建 SQS 并将它们订阅到单个 SNS 主题?
      • 感谢您的反馈。在我看来,这是额外的开销。我需要创建一个主题和 n 个队列来实现这一点,而我可以通过创建主题在其他 JMS 消息传递系统(如 activemq 或 rabbitmq)中实现相同的目的。我更喜欢那个而不是这个。这里有两个很多活动部分。 SNS、SQS。
      • @pvpkiran - 如果我对您的用例有更多了解,那将会有所帮助。 SNS/SQS 非常健壮是有原因的,如果您想 100% 地让任何已发布的消息到达所有 SQS 队列并且它一直留在那里直到被处理,您就想使用它。假设您有从 SQS Y 读取的服务 X,并且您想要扩展它,因此您扩展了 10 个服务实例 X。如果您将消息发布到Y,您是希望所有 10 个实例都收到此消息,还是只希望一个服务实例 X 处理该消息?
      猜你喜欢
      • 2021-02-20
      • 2015-09-26
      • 2011-08-21
      • 1970-01-01
      • 1970-01-01
      • 2012-06-09
      • 1970-01-01
      • 2019-08-03
      • 2012-11-20
      相关资源
      最近更新 更多