(生产事故)rabitmq大量队列数量有增无减,消费组件又一直在打消费日志,进而影响app整体功能

2015年的一天,早上突然很多用户反馈消息系统出现空白且在使用功能的使用与有提示系统异常

吓得我马上上生产机器看日志,发现大量接口调用超时,且mq消费日志不停的再打,很疯狂那种

我们想到的是昨天是正常的,为什么突然之间就大量报错呢,并看错误是啥

产生的乱码报错,会导致进程直接结束,结束的后果就是队列没有被消费,最终导致mq队列数量有增无减少,并且重复被消费最终导致整个app不能使用  

解决方案:

1,解决这个乱码的报错 

2,在消费队列中加try  catch 捕捉异常旧可以了

反思: 

写代码时不要光想着上线功能,应该多考虑一些其他问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RabbitMQ 中,可以通过动态地添加或删除消费者来调整消费数量。这可以通过以下步骤实现: 1. 创建一个队列,并为其定义一个消费者函数。消费者函数将被用来处理从队列中接收到的消息。 2. 使用 `basic.consume()` 函数将消费者函数绑定到队列上,以便它可以开始接收消息。 3. 创建一个循环,在循环中使用 `basic.qos()` 函数来设置每个消费者可以接收的最大未确认消息数。这可以帮助确保消息在多个消费者之间均匀分配。 4. 在循环中使用 `basic.consume()` 函数创建新的消费者,以响应队列中积压的消息。要删除消费者,可以使用 `basic.cancel()` 函数。 以下是一个示例代码片段,演示如何动态调整消费数量: ```python import pika connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) channel = connection.channel() queue_name = 'my_queue' def callback(ch, method, properties, body): print("Received message: %s" % body) channel.queue_declare(queue=queue_name) channel.basic_consume(queue=queue_name, on_message_callback=callback) # Set the maximum number of unacknowledged messages per consumer channel.basic_qos(prefetch_count=1) while True: # Get the current number of consumers consumers = len(channel._consumer_infos) # If there are fewer than 3 consumers, add one more if consumers < 3: channel.basic_consume(queue=queue_name, on_message_callback=callback) # If there are more than 3 consumers, remove one elif consumers > 3: channel.basic_cancel(consumer_tag=channel._consumer_infos.keys()[0]) ``` 这个示例代码片段将队列名 `my_queue` 绑定到一个消费者函数 `callback()` 上。每个消费者最多可以接收 1 条未确认消息。然后,它进入一个无限循环,检查当前消费数量。如果消费者少于 3,它将创建一个新的消费者,并将其绑定到队列上。如果消费者多于 3,它将删除一个消费者。 请注意,这只是一个示例,实际应用中可能需要更复杂的逻辑来确定何时添加或删除消费者。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值