从redis队列PyRSMQ筛选消息

2024-10-02 18:25:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用PyRSMQ发送和接收消息。假设我有一个队列名“test”,我正在从发送方推送一条消息作为“\u batch1”和“\u batch2”,在使用者中,我需要订阅“test”队列,并只读取模式为“*\u batch1”的消息。我如何使用Redis过滤队列中的消息,或者有什么解决方法


Tags: 方法testredis消息队列模式使用者batch1
1条回答
网友
1楼 · 发布于 2024-10-02 18:25:10

您可以使用worker类来处理消息。如果worker processing函数返回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)

相关问题 更多 >