RMQConsumer在我的代码中是一个springbean,它在spring容器初始化时初始化。Spring bean一准备好,它就开始侦听队列上的RMQ消息,而不管整个Spring容器是否准备好。我只想在kubernates pod状态为1/1时才开始消耗消息。在滚动部署期间,除非新吊舱处于1/1状态,否则旧吊舱不会终止,这会导致吊舱数量几乎翻一番,并导致消耗率飙升,这在我的情况下是不希望的。
我尝试了什么我删除了在Bean postConstruct上执行的RMq api的channel.basicConsume方法。并在端点"/postStart"下的Rest控制器方法中添加了代码,我在postStart的生命周期挂钩下的kubernates部署文件中配置了该方法,但似乎不起作用。在spring应用程序打印其第一个日志(使用时间戳进行验证(之前,就调用了钩子。
您能检查readinesProbe在这个用例中是否有帮助吗。
请参阅下面的文章,它可以提供帮助。
将活跃性和就绪性作为Spring Boot的核心概念https://spring.io/blog/2020/03/25/liveness-and-readiness-probes-with-spring-boot