Python 接收方部分中缺少rabbitmq消息

Python 接收方部分中缺少rabbitmq消息,python,rabbitmq,pika,Python,Rabbitmq,Pika,我已经在我的服务器中实现了RabbitMQ。因此,基本上它所做的是主服务器将消息传递给工作服务器。 我面临的问题是,我传递的所有消息都没有被服务器接收。 i、 e如果我发送10条消息,则只收到其中4条 你知道我哪里出错了吗 接收代码 import pika connection = pika.BlockingConnection(pika.ConnectionParameters( host='localhost')) channel = connection.channel(

我已经在我的服务器中实现了RabbitMQ。因此,基本上它所做的是主服务器将消息传递给工作服务器。 我面临的问题是,我传递的所有消息都没有被服务器接收。 i、 e如果我发送10条消息,则只收到其中4条

你知道我哪里出错了吗

接收代码

import pika

connection = pika.BlockingConnection(pika.ConnectionParameters(
        host='localhost'))
channel = connection.channel()

channel.queue_declare(queue='hello')

def callback(ch, method, properties, body):
    print(" [x] Received %r" % body)

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

print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()
发布代码

import pika
import sys

connection = pika.BlockingConnection(pika.ConnectionParameters(
        host='localhost'))
channel = connection.channel()

channel.queue_declare(queue='task_queue', durable=True)

message = ' '.join(sys.argv[1:]) or "Hello World!"
channel.basic_publish(exchange='',
                      routing_key='task_queue',
                      body=message,
                      properties=pika.BasicProperties(
                         delivery_mode = 2, # make message persistent
                      ))
print(" [x] Sent %r" % message)
connection.close()

假设您正在发布到同一队列(如您发布的示例所示)。我建议您启用该标志。这将确保消息得到传递,否则将抛出异常,否则发布将返回False

channel = connection.channel()
channel.confirm_delivery()
published = channel.basic_publish(...)
if not published:
    raise Exception("Unable to publish message!")

在开始使用消息之前,安装for RabbitMQ并检查队列也可能是值得的。通过这种方式,您可以验证消息是否已发布,并在以后被使用。

您确定没有其他人正在侦听同一队列。。。我遇到的最常见的问题faced@Abhishek我有2个listners..正在传递10个元素..但每个元素只接收2个..并且没有其他listners侦听器到同一队列您可以提供您的发布代码吗?@Danielfedotov现在我添加了发布代码,也就是您使用的代码?它从不同的队列发布和使用。