从Redis队列PyRSMQ过滤消息

时间:2020-10-21 12:58:30

标签: python redis queue

我正在使用PyRSMQ发送和接收消息。假设我有一个队列名称“ test”,我正在从发送者处推送消息“ _batch1”和“ _batch2”,在使用者中,我需要订阅“ test”队列并阅读仅已定标为“ * _batch1”的邮件。如何使用Redis过滤队列中的消息,或者有任何解决方法?

1 个答案:

答案 0 :(得分:0)

您可以使用工作类来处理消息。如果 worker 处理函数返回 True,则消息将从队列中删除,否则将保留在队列中以供其他 worker 接收。

例如:

def process(message_id, message, rc, ts):
    # process message here
    m_json = json.loads(message)
    if m_message["job1"]:
        # do something with message if job1
        # if return True the message will be deleted from queue
        return True
    else:
        # if return false message will be visible again in queue and wont be delted
        return False

# create worker for the queue and run it somewhere in your code, like in main()
rsqm_consumer = RedisSMQConsumer(qname=args.queue,
                                 processor=process,
                                 host=args.host, port=args.port, ns=args.ns, vt=args.vt,
                                 empty_queue_delay=args.empty_queue_delay, trace=args.trace)