如果Service1要向service2异步发送命令,那将是理想选择:
service1-> sns-> sqs-> service2
或
service1-> sqs-> service2
做出此决定的依据是什么?
答案 0 :(得分:1)
如果您希望只有一个使用者接收命令,请使用SQS。
如果您希望许多消费者收到它,请将您的命令发布到SNS并订阅SQS。除了SQS外,还有许多不同的订阅类型可供使用。 Lambda,电子邮件,Webhook等。
在两种情况下,命令(或消息)都将异步传递。
如果您只希望一个消费者,并且还订购了交货,则可以使用FIFO SQS队列。 SNS + SQS无法实现有序交付。
答案 1 :(得分:1)
Amazon SQS 不会“传递”消息。相反,应用程序需要轮询SQS才能请求消息。
因此,如果您希望向应用程序“推送”消息,则 Amazon SNS 更合适,但不会将消息排队。
某些人喜欢实现第一个选项,因为可以添加其他使用者,而无需更改现有代码或配置。新的消费者只需订阅现有的Amazon SNS主题即可。
但是,如果您确定肯定不会再有其他消费者,那么直接进入Amazon SQS队列会感到很舒服。