mq 消费者数量是监听器监听的,我们就可以在不重启项目时,调整消费者数量。
通过web动态设置消费者数量
@Resource RabbitListenerEndpointRegistry rabbitListenerEndpointRegistry; @RequestMapping(value = "/modifyMqConsumerNum") @ApiOperation(value = "更新队列消费者数量接口") public Response modifyMqConsumerNum(@RequestParam(value = "queueName", required = false) String queueName, @RequestParam(value = "concurrentConsumers") Integer concurrentConsumers, @RequestParam(value = "maxConcurrentConsumers") Integer maxConcurrentConsumers) { Collection<MessageListenerContainer> listenerContainers = rabbitListenerEndpointRegistry.getListenerContainers(); for (MessageListenerContainer container : listenerContainers) { SimpleMessageListenerContainer con = (SimpleMessageListenerContainer) container; //消息监听容器要消费的队列名称集合 List<String> queueNamesList = Arrays.asList(con.getQueueNames()); //判断容器中的队列名称是否包含需要调整的队列名参数 if (queueNamesList.contains(queueName)) { //注意先设置最大的消费者数量,再设置最小的消费者数量,因为先修改最小数量超过修改前的最大数量时会报异常修改失败 con.setMaxConcurrentConsumers(maxConcurrentConsumers); con.setConcurrentConsumers(concurrentConsumers); } } return Response.success(); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构