rabbitmq消费者启动报队列未找到

使用的是spring-rabbitmq,启动tomcate报错,消费这队列找不到,如果队列不存在消费者会自动创建的
Caused by: org.springframework.amqp.AmqpIllegalStateException: Fatal exception on listener startup
Caused by: org.springframework.amqp.rabbit.listener.QueuesNotAvailableException: Cannot prepare queue for listener. Either the queue doesn’t exist or the broker will not allow us to use it.
xml加上如下配置就可以了自动创建了
<rabbit:admin connection-factory=“connectionFactory”/>

RabbitMQ 中,多个消费者可以同时消费同一个队列的消息。这种模式称为“竞争消费者模式”。多个消费者同时订阅同一个队列,每个消息只能被一个消费者消费。这种模式可以提高消息的处理效率和可靠性。 以下是使用 Python Pika 库实现多个消费者消费同一个队列的示例代码: ```python import pika import time # 连接 RabbitMQ 服务器 connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) channel = connection.channel() # 创建一个名为 'my_queue' 的队列 channel.queue_declare(queue='my_queue') # 定义回调函数用于处理收到的消息 def callback(ch, method, properties, body): print("Received %r" % body) time.sleep(1) # 模拟处理消息的耗时 print("Done") ch.basic_ack(delivery_tag=method.delivery_tag) # 设置每个消费者只处理一个消息 channel.basic_qos(prefetch_count=1) # 启动多个消费者同时消费 'my_queue' 队列中的消息 for i in range(3): channel.basic_consume(queue='my_queue', on_message_callback=callback) print('Waiting for messages. To exit press CTRL+C') channel.start_consuming() ``` 在上面的示例代码中,我们创建了三个消费者同时消费名为 `my_queue` 的队列中的消息。每个消费者都会调用 `callback` 函数来处理消息。`channel.basic_qos(prefetch_count=1)` 设置了每个消费者只处理一个消息,以确保消息在多个消费者之间被平均分配。在每个消息被处理完成后,调用 `ch.basic_ack(delivery_tag=method.delivery_tag)` 告诉 RabbitMQ 该消息已经被成功处理了。 需要注意的是,如果多个消费者同时消费同一个队列中的消息,那么消息的处理顺序可能会被打乱。如果需要保证消息的处理顺序,可以将消息发送到多个队列中,每个队列只有一个消费者,从而保证消息的顺序性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值