【问题标题】:How to pause and resume RMQ consumer in Java如何在 Java 中暂停和恢复 RMQ 消费者
【发布时间】: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


【解决方案1】:

您能否检查一下 readinessProbe 是否有助于此用例。

请参考下面的文章。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    • 1970-01-01
    相关资源
    最近更新 更多