【发布时间】:2022-01-23 10:29:30
【问题描述】:
我的代码中的 RMQConsumer 是一个 Spring bean,它在 Spring 容器初始化时被初始化。 只要 Spring bean 准备好,它就会开始侦听队列上的 RMQ 消息,而不管整个 Spring 容器是否准备好。 我只想在 kubernates pod 状态为 1/1 时才开始消费消息。与滚动部署期间一样,除非新 pod 处于 1/1 状态,否则旧 pod 不会终止,这会导致 pod 数量几乎翻倍,并导致消耗率飙升,这在我的情况下是不希望的。
我尝试了什么 我删除了在 Bean postConstruct 执行的 RMq api 的 channel.basicConsume 方法。并在端点'''/postStart'''下的Rest控制器方法中添加了代码,我在postStart的生命周期钩子下的kubernates部署文件中配置,这似乎不起作用。在 spring 应用程序打印它的第一个日志之前调用钩子(用时间戳验证)。
【问题讨论】:
-
您能提供您的部署清单吗?
-
由于组织政策,无法共享整个文件。分享相关的sn-p:生命周期:postStart:httpGet:path:/postStart port:8080。如果您需要任何特定的东西,请告诉我
-
您是否为 Spring 部署设置了
readinessProbe?
标签: spring-boot kubernetes containers hook rmq