【问题标题】:Boto SQS: delete RawMessageBoto SQS:删除 RawMessage
【发布时间】:2013-02-16 02:16:04
【问题描述】:

我使用的是 python boto 2.8,但无法删除消息。这是我的测试代码:

conn = boto.sqs.connect_to_region("us-east-1",
                                  aws_access_key_id=AWS_ACCESS_KEY,
                                  aws_secret_access_key=AWS_SECRET_KEY)

q = conn.get_queue("sqs_bounces")
q.set_message_class(RawMessage) //need this to be able to get message as json
results = q.get_messages(num_messages=10,visibility_timeout=30,wait_time_seconds=10)
for rs in results:
    str = rs.get_body()
    print str
    result = json.loads(str)
    rs = json.loads(result["Message"])
    print rs["notificationType"]
    #get the email and save it as bounced
    // Do saving.....

    #Delete message
    //How do i delete the current message?

这里有人可以指导我如何删除它吗?有时我会收到 1 条消息,有时会收到 3 条消息。而且我不想在每次拉取时都保存相同的退回电子邮件,这就是为什么我需要在保存它们后将其删除。

谢谢

【问题讨论】:

    标签: python boto amazon-sqs


    【解决方案1】:

    返回结果集中的每个对象都是一个 RawMessage 对象,它有一个delete 方法。所以,如果你把你的循环编码得更像这样:

    for msg in results:
        body = msg.get_body()
        body = json.loads(body)
        message_body = json.loads(body['Message'])
        ...
        msg.delete()
    

    您应该可以删除该消息。

    【讨论】:

    • 谢谢伙计!有效。我看到了那个方法,但没有任何描述。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 2011-07-15
    相关资源
    最近更新 更多