【问题标题】:Get specific message from queue(Rabbitmq) which is in json from a bunch of mesggae in the queue,python从队列中的一堆mesggae中获取json中的队列(Rabbitmq)的特定消息,python
【发布时间】:2017-09-27 11:46:41
【问题描述】:

假设我有两个脚本 - 一个用于 cloudfront(cf),另一个用于 elb。我在队列 (Rabbitmq) 中的 json 中有一些分配值,称为请求队列。当我运行我的 elb 脚本时,它应该只得到带有 file_type=elb 的味精

{'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'}

我下面的代码仅适用于我发布到队列的第一个味精,而不适用于类型。任何人都可以提供想法我可以做些什么来从 cf 脚本中获取 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']

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

【问题讨论】:

    标签: python rabbitmq queue


    【解决方案1】:

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

    参见例如part 4 of the RabbitMQ tutorial

    【讨论】:

    • ..好建议..让我检查..rabbitmq的绝对新手..我会发现
    猜你喜欢
    • 2013-05-17
    • 2012-10-21
    • 2014-12-09
    • 1970-01-01
    • 2017-09-16
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多