从队列中的JSON中获取Queue(RabbitMQ)的具体消息,该消息是在python队列中的一堆Mesggae中获取



假设我有两个脚本 - 一个是cloudfront(cf),另一个ELB。我在json中有一些分配的值(rabbitmq),称为请求queue。当我运行时我的ELB脚本它应该仅获得file_type = elb

的msg
{'file_type':'elb','elb_name':'name1','customer_id':'1','s3_bucket':'elb-logs-bucket'}

当我运行CF脚本时,它应该仅获得file_type = cf

的msg
{'file_type':'cf','cf_name':'name1','customer_id':'1','s3_bucket':'cf-logs-bucket'}

我的下面代码仅适用于我发布到队列的第一个消息,而不是类型。..我正在使用默认交换

import json
import pika
import logging
def get_rmq_request_queue(channel,connection,req_queue_name):
    payload_dict={}
    try:
        queue_message=channel.basic_get(queue=req_queue_name,no_ack=False)
        payload=queue_message[2]
        print payload
        print payload
        payload_dict=json.loads(payload)
        return payload_dict
    except Exception as e:
        payload_dict={}
        payload_dict['error']=str(e)        
        return payload_dict
main():
res_req_que=get_rmq_request_queue(channel,connection,req_queue_name)
    if 'error' not in res_req_que:
        s3_bucket=res_req_que['s3_bucket']
        customer_id=res_req_que['customer_id']
        file_type=res_req_que['file_type']
        cf_name=res_req_que['cf_name']

我可能会在队列中有很多消息,挑战是我需要使用文件类型获取最新消息...

兔子的点之一是,您可以定义队列与特定路由键交换。您应该将type参数用作路由键的一部分,然后绑定队列,以便听取您想要的类型。

参见例如兔子教程的第4部分。

最新更新