2017-09-27 155 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