- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个基于 spring 和 spring-rabbit 库的独立 java 应用程序。我这样开始:
nohup java -jar myapp.jar &
但有时我必须重新启动应用程序才能升级它。现在我使用killall -9 java,但这不是最好的方法。如何正确停止它并确保在该时间段内发送给该应用程序的兔子监听器的所有请求都不会被部分处理,而只会被拒绝并发送给其他兔子消费者?
最佳答案
首先 - 不要使用 killall -9
- 它会向 JVM 发送一个 SIGKILL
信号,该信号无法被拦截,并且不允许有序关闭。相反,使用 killall
或 killall -15
(15
是默认信号)发送 SIGTERM
,该信号被拦截JVM 并允许有序关闭。
第二点 - 不要过早确认 RabbitMQ 消息 - 仅在消息实际被处理后才这样做。在您确认消息之前,RabbitMQ 会将其保持在“未确认”状态。如果消费者在没有确认的情况下死亡,消息将被放回到队列中以供另一个消费者接收。
根据您使用的框架,您可能需要注册 shutdown hook以干净的方式关闭您的应用程序。例如,如果您使用独立的 Spring,则应该调用 ConfigurableApplicationContext#registerShutdownHook
在您创建的 ApplicationContext
上,以确保所有 bean(包括 RabbitMQ 使用者)都正确关闭。
关于java - springrabbitmq java应用程序正确关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34413094/
以下类包含在多个消费者应用程序中: @Component @Configuration public class HealthListener { public static final St
我有一个基于 spring 和 spring-rabbit 库的独立 java 应用程序。我这样开始: nohup java -jar myapp.jar & 但有时我必须重新启动应用程序才能升级它。
我有一个 JSF 支持 bean 和 spring+rabbitMQ 应用程序。我调用那里 rabbitTemplate.convertAndSend() 由于复杂的逻辑、队列链等,我无法在那里使用c
我是一名优秀的程序员,十分优秀!