在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)
在Python中使用aws的sns和sqs