哪个更适合发送命令SNS或SQS?

时间:2019-05-04 17:43:00

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

如果Service1要向service2异步发送命令,那将是理想选择:

  

service1-> sns-> sqs-> service2

  

service1-> sqs-> service2

做出此决定的依据是什么?

2 个答案:

答案 0 :(得分:1)

如果您希望只有一个使用者接收命令,请使用SQS。

如果您希望许多消费者收到它,请将您的命令发布到SNS并订阅SQS。除了SQS外,还有许多不同的订阅类型可供使用。 Lambda,电子邮件,Webhook等。

在两种情况下,命令(或消息)都将异步传递。

如果您只希望一个消费者,并且还订购了交货,则可以使用FIFO SQS队列。 SNS + SQS无法实现有序交付。

答案 1 :(得分:1)

Amazon SQS 不会“传递”消息。相反,应用程序需要轮询SQS才能请求消息。

因此,如果您希望向应用程序“推送”消息,则 Amazon SNS 更合适,但不会将消息排队。

某些人喜欢实现第一个选项,因为可以添加其他使用者,而无需更改现有代码或配置。新的消费者只需订阅现有的Amazon SNS主题即可。

但是,如果您确定肯定不会再有其他消费者,那么直接进入Amazon SQS队列会感到很舒服。