解决使用RabbitTemplate操作RabbitMQ,发生The channelMax limit is reached. Try later.问题

/ MQ / 没有评论 / 1978浏览

解决使用RabbitTemplate操作RabbitMQ,发生The channelMax limit is reached. Try later.问题

使用RabbitTemplate操纵RabbitMQ,每个RabbitTemplate等于一个connection,每个connection最多支持2048个channel,当hannel达到2048时,会报错org.springframework.amqp.AmqpResourceNotAvailableException: The channelMax limit is reached. Try later。

解决这个问题,有两个思路:

我使用的是第二种,增加RabbitTemplate,发送时,产生一个随机数,命中一个RabbitTemplate执行发送任务,这样每个connection的channel数,不会太高,大致在450-500个。并且限制发送的数量和频率,发送一定数量的消息后,休眠一段时间。