当前位置: 首页 > news >正文

杭州疫情发布会引擎搜索优化

杭州疫情发布会,引擎搜索优化,河南做网站 河南网站建设,郑州国际装备制造业会展网站的建设我们在消费RabbitMQ消息的过程中,有时候可能会想先暂停消费一段时间,然后过段时间再启动消费者,这个需求怎么实现呢?我们可以借助RabbitListenerEndpointRegistry这个类来实现,它的全类名是org.springframework.amqp.r…

        我们在消费RabbitMQ消息的过程中,有时候可能会想先暂停消费一段时间,然后过段时间再启动消费者,这个需求怎么实现呢?我们可以借助RabbitListenerEndpointRegistry这个类来实现,它的全类名是org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry,通过这个类可以实现全部队列消息的启动、停止消费,也可以实现指定队列消息的启动、停止消费。具体的原因感兴趣的话可以参考一下我前面的这篇博客(17)不重启服务动态调整RabbitMQ消费者数量,里面有相应的源码分析。

停止、启动全部队列消费

        RabbitListenerEndpointRegistry类提供了start()方法和stop()方法,可以看到底层都是通过调用getListenerContainers()获取到所有队列的消费监听容器列表,然后遍历挨个调用对应的start()方法和stop()方法。

	@Overridepublic void start() {for (MessageListenerContainer listenerContainer : getListenerContainers()) {startIfNecessary(listenerContainer);}}@Overridepublic void stop() {for (MessageListenerContainer listenerContainer : getListenerContainers()) {listenerContainer.stop();}}

        我们只需要获取到RabbitListenerEndpointRegistry对象,然后调用其start()方法和stop()方法即可实现启动/停止所有队列消费。

        实现代码如下所示:

@Resource
RabbitListenerEndpointRegistry rabbitListenerEndpointRegistry;@RequestMapping(value = "/startStopAllConsumer")
@ApiOperation(value = "启动/暂停全部队列消息消费")
public Response startStopAllConsumer(@RequestParam(value = "consumeSwitch", required = true) boolean consumeSwitch) {log.info("启动/暂停全部队列消息消费,consumeSwitch:{}",consumeSwitch);if(consumeSwitch){rabbitListenerEndpointRegistry.start();}else {rabbitListenerEndpointRegistry.stop();}return Response.success();
}

        传入开关参数为false,会停止所有队列消费者消费,调用后控制台看到如下日志

2023-09-04 19:43:11.480 +0800 [TID: N/A] [http-nio-8080-exec-4] INFO  c.b.t.m.p.w.PayCashierMockController:67 - 启动/暂停全部队列消息消费,consumeSwitch:false
2023-09-04 19:43:11.556 +0800 [TID: N/A] [http-nio-8080-exec-4] INFO  o.s.a.r.l.SimpleMessageListenerContainer:586 - Waiting for workers to finish.
2023-09-04 19:43:12.352 +0800 [TID: N/A] [http-nio-8080-exec-4] INFO  o.s.a.r.l.SimpleMessageListenerContainer:589 - Successfully waited for workers to finish.
可以看到消息监听容器关闭的日志,然后再传入开关参数为true,调用后会启动所有队列消息消费。

停止、启动指定队列消费

        上面提到了RabbitListenerEndpointRegistry.getListenerContainers()可以获取到所有队列的消费监听容器列表,我们可以使用MessageListenerContainer中获取消费的队列名进行判断,以实现指定队列的停止、启动消费。

        实现代码如下所示:

@Resource
RabbitListenerEndpointRegistry rabbitListenerEndpointRegistry;@RequestMapping(value = "/startStopConsumer")
@ApiOperation(value = "启动/暂停指定队列消息消费")
public Response startStopConsumer(@RequestParam(value = "queueName", required = false) String queueName,@RequestParam(value = "consumeSwitch", required = true) boolean consumeSwitch) {log.info("启动/暂停指定队列消息消费,consumeSwitch:{},queueName:{}",consumeSwitch,queueName);//获取所有消息监听容器Collection<MessageListenerContainer> listenerContainers = rabbitListenerEndpointRegistry.getListenerContainers();for (MessageListenerContainer container : listenerContainers) {SimpleMessageListenerContainer con = (SimpleMessageListenerContainer) container;//消息监听容器要消费的队列名称集合List<String> queueNamesList = Arrays.asList(con.getQueueNames());//判断容器中的队列名称是否包含需要调整的队列名参数if (queueNamesList.contains(queueName)) {if(consumeSwitch){con.start();}else{con.stop();}}}return Response.success();
}

传入开关参数为false,停止pay_work_notify队列消费者消费,调用后控制台看到如下日志

2023-09-04 19:51:37.130 +0800 [TID: N/A] [http-nio-8080-exec-1] INFO  c.b.t.m.p.w.PayCashierMockController:80 - 启动/暂停指定队列消息消费,consumeSwitch:false,queueName:pay_work_notify
2023-09-04 19:51:37.200 +0800 [TID: N/A] [http-nio-8080-exec-1] INFO  o.s.a.r.l.SimpleMessageListenerContainer:586 - Waiting for workers to finish.
2023-09-04 19:51:37.903 +0800 [TID: N/A] [http-nio-8080-exec-1] INFO  o.s.a.r.l.SimpleMessageListenerContainer:589 - Successfully waited for workers to finish.
可以看到消息监听容器关闭的日志,然后再传入开关参数为true,调用后会启动pay_work_notify队列消息消费。

http://www.khdw.cn/news/67767.html

相关文章:

  • 大学生怎么做网站怎样注册自己网站的域名
  • 一键生成app制作器免费版整站优化代理
  • 帮别人做网站涉嫌诈骗站长网站查询工具
  • 国内国际新闻最新消息10条东莞网站seo公司哪家大
  • 网站宽度多少合适怎样建网站平台
  • 微信怎么做一些微网站网络项目资源网
  • 一个企业是如何做网站建设的商丘seo优化
  • 做网站必须要有的素材重庆公司seo
  • 宠物网站制作费用明细网络营销策划公司
  • 官方网站开发用什么语言网络推广都是收费
  • 网站建设计划表模板下载福州短视频seo平台
  • 建网站是什么专业类别免费大数据查询平台
  • 做网站什么内容吸引人百度推广代理商名单
  • 网站开发的一般流程营销型网站建设哪家好
  • 免费做网站. 优帮云最好用的搜索引擎
  • 北京市网站公司域名服务器地址查询
  • 长沙县营销型网站建设选哪家精准营销系统价值
  • 去哪接单做网站昆山网站建设公司
  • 美工接单网谷歌推广优化
  • 单独做网站要学程序设计吗seo推广代运营
  • 站长权重线下推广方式有哪些
  • 做网站有er图可口可乐网络营销策划方案
  • 专门做配电箱的网站企业营销策略分析论文
  • 空白的网站怎么建设美国新冠疫情最新消息
  • asp access网站建设源代码软件开发外包
  • 南宁网站建设代理百度指数查询官网
  • 手机网站如何开发西安百度快照优化
  • 给大家推荐免费视频服务器引擎优化是什么工作
  • 重庆网站建设制作今日的重大新闻
  • 怎么做购物微信网站上海最专业的seo公司