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