从AMQP迁移到Amazon SNS/SQS - 需要了解概念

Esb*_*ald 3 migration amqp rabbitmq amazon-sqs amazon-sns

我对RabbitMQ和AMQP协议很有经验,并且构建了一个包含命令,请求和事件模式的系统.

现在我将构建一个在AWS Lambda上运行的系统,因此使用SNS,SQS等.我想了解这些事情之间的"映射".

什么相当于AMQP的交易所?什么是路由密钥?

如何在SNS和SQS中为扇出,直接和主题​​交换(或类似)设置队列绑定?

别人怎么处理这个?对我来说,RabbitMQ看起来像是一个工具,可以满足消息总线的常规需求,AWS提供了块,你必须自己设置/构建功能.我对吗?

Tay*_*ood 10

什么相当于AMQP的交易所?

最接近的概念可能是SNS,因为您可以配置SNS 主题以发布到n个 SQS队列.然后,当您写入该主题时,每个订阅的队列都会收到一条消息.如果您愿意,也可以直接将消息写入SQS队列.

什么是路由密钥?

对此没有真正的等价物.SNS到SQS绑定不允许除主题到队列绑定之外的任何其他过滤/控制.您可以通过具有多个SNS主题来近似路由,即每个主题是"路由密钥".

如何在SNS和SQS中为扇出,直接和主题​​交换(或类似)设置队列绑定?

  • 扇出:写入SNS主题,每个订阅的队列将收到相同的消息.
  • 直接:直接写入SQS队列,或只有订阅了这些队列的SNS主题.
  • 主题:相应地创建SNS主题和订阅队列.

别人怎么处理这个?

我在AWS消息传递之前使用过RabbitMQ,所以我经历了相同的学习曲线.AWS并没有提供尽可能多的交换/路由功能,但根据我的经验,您可以通过SNS主题和SQS队列的某些组合获得足够接近.

  • 只是想通过更新来补充这个出色的答案,回复:“SNS-to-SQS 绑定不允许任何额外的过滤/控制” - 截至 2019 年 8 月,您现在可以将“过滤策略”附加到订阅,其中应该允许人们近似路由关键行为。请参阅:https://docs.aws.amazon.com/sns/latest/dg/sns-message-filtering.html (2认同)