在Python中使用aws的sns和sqs

首先,sns = Simple Notification Service,sqs = Simple Queue Service

sns与sqs有什么不同?

(ref:https://stackoverflow.com/questions/13681213/what-is-the-difference-between-amazon-sns-and-amazon-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