Amazon SDK for Ruby经常更改,aws-sdk
Ruby gem的当前版本为2.0.29。轮询Amazon SQS消息的old method不再有效
# polling SQS Queue
queue.poll do |msg|
puts "Got message: #{msg.body}"
end
AWS SDK for Ruby版本2.0的正确方法是什么?
答案 0 :(得分:1)
在最新的Ruby AWS SDK的文档中,我没有看到轮询方法。但是,有一种方法receive_message
。详细信息位于http://docs.aws.amazon.com/sdkforruby/api/Aws/SQS/Client.html#receive_message-instance_method
此外,您可以将SQS配置为始终返回响应消息。以下是详细信息http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-long-polling.html
您需要确保连接不会超时,以防您需要等待太长时间才能将邮件送达并发送给您。
最后,您可以通过在while循环中调用receive_message
来模仿poll方法,并且只有在响应包含某些消息时才会中断循环。您可以使用递归以类似方式处理所有消息。
2015年3月12日更新
如果您想模仿民意调查方法,您还需要删除该邮件。
答案 1 :(得分:1)
版本2 SDK尚未实现队列轮询。它作为功能请求位于SDK backlog上:https://github.com/aws/aws-sdk-ruby/blob/master/FEATURE_REQUESTS.md#amazon-sqs-queue-poller。
答案 2 :(得分:0)
您可以查看Shoryuken,它是在SQS之上构建的,还可以与Rails(ActiveJob)集成。但是你也可以在没有Rails的情况下在一个独立的Ruby应用程序中使用它。