2017-09-27 158 views
0

假设我有两个脚本 - 一个是用于cloudfront(cf)的,另一个是elb.I在json中有一些赋值队列(RabbitMQ的),叫请求queue.when我跑我ELB脚本里面应该得到只有FILE_TYPE = ELB味精从队列中的一串mesggae获取队列中的特定消息(Rabbitmq),python

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

,当我跑我的CF脚本应该只得到MSG与FILE_TYPE = CF

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

我下面的代码只针对我发布到队列中的第一味精,不type.Anyone能公关奥维德的想法我能做些什么来从CF脚本和副versa..I得到FILE_TYPE = CF味精正在使用默认交换

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'] 

我可能会在队列中的消息很多,面临的挑战是,我需要以获得最近的消息文件类型...

回答

0

RabbitMQ的要点之一是,您可以定义队列绑定到具有特定路由键的交换。您应该使用type参数作为您的路由键的一部分,然后绑定您的队列以便它监听您想要的类型。

参见例如part 4 of the RabbitMQ tutorial

+0

..好建议..我检查..绝对新的rabbitmq ..我会找出 – pupu