假设我有两个脚本 - 一个是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部分。