首先,sns = Simple Notification Service,sqs = Simple Queue Service
sns与sqs有什么不同?
sns是分布式发布-订阅系统,一旦publisher发布了,subscriber那边立刻能接收到。
sns的订阅者(end point)可以是邮件,sms,甚至是sqs,通常用于subscriber数量未知的情况
sqs是分布式的队列系统,message不默认推送到subscriber那里。
subscriber得到message需要轮询(polling)。
一旦某个subscriber接收、处理或者删除这个message,其他的订阅者就不会收到同样的message了
怎样使用sns?(ref:https://gist.github.com/stuartmyles/8099723)
在保证aws的key正确一致的情况下,还要保证publisher和subscriber的目标是同一个topic
怎样使用sqs?(ref:https://aws.amazon.com/cn/blogs/developer/using-python-and-amazon-sqs-fifo-queues-to-preserve-message-sequencing/)
使用sqs需要创建(https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html),需要保证aws的key与发送者key的准确一致,QueueName也要一致
也可以让sns充当publisher,用sqs接收。这种情况下,需要使用 set_attributes 方法(ref:https://aws.amazon.com/cn/blogs/developer/subscribing-an-sqs-queue-to-an-sns-topic/, https://docs.aws.amazon.com/sns/latest/dg/SendMessageToSQS.html)