gpt4 book ai didi

python - RabbitMQ 是否能够将消息传递给特定的客户端?或者我必须在客户端执行这些检查吗?

转载 作者:行者123 更新时间:2023-11-28 18:54:35 25 4
gpt4 key购买 nike

我的软件在网络上的许多客户端上运行。我一直在尝试使用 RabbitMQ 作为在每个客户端之间传递消息的解决方案。

我的测试代码是这样的:

#!/usr/bin/python2

import pika
import time

connection = pika.AsyncoreConnection(pika.ConnectionParameters(
'localhost'))
channel = connection.channel()

def callback(ch, method, properties, body):
# send messages back on certain events
if body == '5':
channel.basic_publish(exchange='',
routing_key='test',
body='works')

print body

channel.queue_declare(queue='test')
channel.basic_consume(callback, queue='test', no_ack=True)

for i in range(0, 8):
channel.basic_publish(exchange='',
routing_key='test',
body='{}'.format(i))

time.sleep(0.5)

channel.close()

将其想象成一种“聊天程序”。每个客户端都需要不断地监听消息。有时,客户端需要将消息发送回服务器。

此代码有效,但我遇到了问题。当下面的代码发出消息 works 时,它会再次从 RabbitMQ 队列中检索该消息。有没有办法告诉我的客户(生产者和消费者)没有收到刚刚发送的消息?

我看不到 RabbitMQ 中内置的这个功能,所以我想我会以以下形式发送消息:

body='{"client_id" : 1, "message" : "this is the message"}'

然后我可以解析该字符串并检查 client_id。然后客户端可以忽略所有不是发往它的消息。

有没有更好的方法?我应该寻找 RabbitMQ 的替代品吗?

最佳答案

你可以在 RabbitMQ 中拥有尽可能多的队列。为什么不为发送到服务器的消息创建一个队列,也为每个客户端设置一个队列?

关于python - RabbitMQ 是否能够将消息传递给特定的客户端?或者我必须在客户端执行这些检查吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5401434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com