当队列中有东西时,Amazon的SQS如何通知我的一个“worker”服务器?

2024-04-28 23:11:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习本教程:http://boto.s3.amazonaws.com/sqs_tut.html

当队列中有东西时,如何指派我的20个工作人员中的一个来处理它?

我在用Python。


Tags: comhttps3队列html教程botosqs
3条回答

如果不需要低延迟,可以尝试以下操作:

在队列上创建cloudwatch警报,如“可见消息”或“已接收消息”>;0。 作为一个操作,您将向sns主题发送一条消息,然后sns主题可以通过http/s端点将消息发送给您的工作人员。

通常这种方法用于自动缩放。

不幸的是,SQS缺少一些我们在队列中经常期待的语义。没有任何通知或阻止“get”调用。

亚马逊相关的SNS/简单的通知服务可能对你的这项工作很有用。将工作添加到队列后,可以向已订阅的工作线程发送通知。

另见:

http://aws.amazon.com/sns/

Best practices for using Amazon SQS - Polling the queue

在SQS队列上进行长轮询(现在)是可能的。

http://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/Query_QueryReceiveMessage.html

长轮询支持(整数从1到20)-ReceiveMessage操作调用将等待消息进入队列以包含在响应中的持续时间(秒),而不是在消息尚不可用时返回空响应。

如果未在请求中指定WaitTimeSeconds,则使用队列属性ReceiveMessageWaitTimeSeconds确定等待的时间。

类型:0到20之间的整数(秒)

默认值:队列的ReceiveMessageWaitTimeSeconds。

相关问题 更多 >