使用RabbitTemplate操縱RabbitMQ,每個RabbitTemplate等於一個connection,每個connection最多支持2048個channel,當hannel達到2048時,會報錯org.springframework.amqp.AmqpResourceNotAvailableException: The channelMax limit is reached. Try later。
解決這個問題,有兩個思路:
一是限制發送的消息數量,也就是控制channel的數量;
二是增加connection,也就是RabbitTemplate;
我使用的是第二種,增加RabbitTemplate,發送時,產生一個隨機數,命中一個RabbitTemplate執行發送任務,這樣每個connection的channel數,不會太高,大致在450-500個。並且限制發送的數量和頻率,發送一定數量的消息后,休眠一段時間。
