rabbitmq多实例时,怎么保证只有一台去消费

 

多加一台服务

 

 

 

 

这时,也就有两个myMessage的MQ

 

 

案例提到,一个服务的请求,这时两台服务都会接受到消息,但测试的结果不是。

如果两个服务,只想出有一个"myMessage"队列,怎么做呢?

在stream里加个分组, myMessage是消息队列的名字。

 

结果 :

 

最后发现,一个端口不停发消息,两台服务最后都还是会接收MQ,看分布机制。感觉是默认平均轮循,改为随机好像还是平分接收,不知道为什么。可能随机不错了?

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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、付费专栏及课程。

余额充值