当前位置: 首页 > 面试题库 >

如何使用@RabbitListener优雅地停止使用消息

应涵容
2023-03-14
问题内容

有没有一种方法可以优雅地停止ListenerContainer和及其相关联的Consumers

我正在努力实现的目标。

  1. 停止使用消息。
  2. 优雅地停下来ListenerContainer
  3. 等待长期运行的消费者,并在完成后确认。

我可以停止ListenerContainers使用consumer.stop(),但是长期运行的使用者不会成功完成,并且一旦ListenerContainer恢复后,已处理的消息也不会被确认,因此将再次进行处理。

输出量

Waiting for workers to finish.
Workers not finished.
Closing channel for unresponsive consumer: Consumer@6d229b1c

邮件已处理,但未确认。

我也许可以使用来实现正常关机setForceCloseChannel(false),但是是否可以验证被取消的使用者是否已完成?SimpleMessageListenerContainer.doShutDown()具有本地范围的列表“
canceledConsumers”。


问题答案:

增加关闭超时。

请参阅消息侦听器容器配置。

shutdownTimeout

当容器关闭时(例如,如果关闭了其封闭的ApplicationContext),它将等待处理运行中的消息直至达到此限制。默认为五秒钟。

/**
 * The time to wait for workers in milliseconds after the container is stopped. If any
 * workers are active when the shutdown signal comes they will be allowed to finish
 * processing as long as they can finish within this timeout. Defaults
 * to 5 seconds.
 * @param shutdownTimeout the shutdown timeout to set
 */
public void setShutdownTimeout(long shutdownTimeout) {


 类似资料:
  • 问题内容: 如何在Linux和Windows中正常停止Java进程? 什么时候被调用,什么时候不被调用? 终结器又如何呢? 我可以从外壳向Java进程发送某种信号吗? 我正在寻找最好的便携式解决方案。 问题答案: 在所有未强制终止VM的情况下,都会执行关机挂钩。因此,如果要发出“标准” kill(通过kill命令),则它们将执行。同样,它们将在调用后执行。 但是强行杀死(或),然后它们将不会执行。

  • 问题内容: 我写了一个线程,它花费太多时间执行,而且似乎还没有完全完成。我想优雅地停止线程。有什么帮助吗? 问题答案: 做到这一点的好方法是让一个线程保护一个Thread的变量,并在你要停止它的时候将其设置为外部变量,例如: `class MyThread extends Thread { volatile boolean finished = false; public void stopMe(

  • 不论是什么类型的应用,都会希望在服务停止前能够收到停止通知,有一定的时间做退出前的释放资源、关闭连接、不再接收外部请求等工作。我们对所有应用的优雅停止配置提供了一个全面指导,也提供了每种类型服务,从开发到部署到应用引擎v2的测试优雅停止功能的完整流程。 容器优雅停止最简单办法 当退出容器前,会将容器从服务提供列表中移除,使得外部请求不再打在其上,同时执行退出前可执行Hook。 在这里,我们设置在停

  • 本文向大家介绍Dubbo如何优雅停机?相关面试题,主要包含被问及Dubbo如何优雅停机?时的应答技巧和注意事项,需要的朋友参考一下 Dubbo 是通过 JDK 的 ShutdownHook 来完成优雅停机的,所以如果使用 kill -9 PID 等强制关闭指令,是不会执行优雅停机的,只有通过 kill PID 时,才会执行。  

  • 本文向大家介绍如何优雅地使用c语言编写爬虫,包括了如何优雅地使用c语言编写爬虫的使用技巧和注意事项,需要的朋友参考一下 大家在平时或多或少地都会有编写网络爬虫的需求。一般来说,编写爬虫的首选自然非python莫属,除此之外,java等语言也是不错的选择。选择上述语言的原因不仅仅在于它们均有非常不错的网络请求库和字符串处理库,还在于基于上述语言的爬虫框架非常之多和完善。良好的爬虫框架可以确保爬虫程序

  • 我在eclipse(java main method program)中运行一个脚本,它创建线程,每个线程处理一个excel表,然后将处理后的数据保存到数据库中。它已经处理数据2天了,今天突然我从excel处理完每条记录后打印的日志停止了。 我的代码的编写方式是,在处理完一个完整的工作表后,它将一条状态消息写入excel工作表记录中。这部分代码是在finally块中编写的。我一直在等待程序自行终止