gpt4 book ai didi

apache-kafka - 当目标系统关闭时,停止 Spring Cloud Stream @StreamListener 监听

转载 作者:行者123 更新时间:2023-12-02 18:13:02 26 4
gpt4 key购买 nike

我有一个应用程序,它从 Kafka 获取消息并调用目标系统来更新旧版 Oracle 数据库。

我想启用一个场景,如果目标系统关闭,则将消息留在 Kafka 总线上,并且在给定的时间内不处理它们。我正在考虑一些基于 Hystrix 的断路器解决方案,但我找不到任何机制来告诉 Spring Cloud Stream “停止”事件监听。我能想到的唯一其他选择是,如果断路器打开,则将这些消息传输到错误/重新处理主题,但这对我来说听起来像是反模式。我应该能够暂停系统处理事件,这就是微服务应用程序中发布/订阅的全部优势。

如有任何帮助,我们将不胜感激。

最佳答案

一种解决方案是自动连接应用程序上下文。

@Autowired
private ConfigurableApplicationContext context;

您可以stop()start() 上下文。

不过,您不应该在调用 @StreamListener 的线程上调用 stop(),否则停止将被延迟(因为容器将等待该线程默认退出 5 秒 - 至少使用 Rabbit Binder )。

当然,您将需要某种带外机制来重新启动 - 也许是 JMX 或监听某种控制主题的单独应用程序上下文。

关于apache-kafka - 当目标系统关闭时,停止 Spring Cloud Stream @StreamListener 监听,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39598943/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com