0

我的代码中的 RMQConsumer 是一个在 Spring 容器初始化时初始化的 Spring bean。只要 Spring bean 准备好,它就会开始监听队列上的 RMQ 消息,而不管整个 Spring 容器是否准备好。我只想在 kubernates pod 状态为 1/1 时才开始消费消息。与滚动部署期间一样,除非新 pod 处于 1/1 状态,否则旧 pod 不会终止,这会导致 pod 数量几乎翻倍,并使消耗率飙升,这在我的情况下出于某些原因是不希望的。

我尝试删除了在 Bean postConstruct 执行的 RMq api 的 channel.basicConsume 方法。并在端点'''/postStart'''下的Rest控制器方法中添加了代码,我在postStart的生命周期挂钩下的kubernates部署文件中配置,这似乎不起作用。在 Spring 应用程序甚至打印它的第一个日志(使用时间戳验证)之前调用该钩子。

4

1 回答 1

0

你能检查一下 readinessProbe 是否会在这个用例中有所帮助。

请参阅下面的文章,它可以提供帮助。

将 Liveness 和 Readiness 提升为 Spring Boot 的核心概念 https://spring.io/blog/2020/03/25/liveness-and-readiness-probes-with-spring-boot

于 2021-12-22T17:39:01.343 回答