【问题标题】:How to delay initialization of Spring Cloud Stream StreamListener?如何延迟 Spring Cloud Stream StreamListener 的初始化?
【发布时间】:2020-11-20 09:18:45
【问题描述】:

我在 StreamListener 初始化时遇到问题。我无法解决我的问题。

我在我的项目中使用 Spring Cloud Stream Kafka 和 Spring Cache。 Spring Cache 在 SmartLifeCycle 的 start() 方法之后被初始化。但是 StreamListener 在 SmartLifeCycle 的 start() 方法之前开始消费数据。因此,我无法在 StreamListener 开始使用数据之前完成缓存初始化,这给我带来了问题。

有什么方法可以延迟 StreamListener 处理或延迟 StreamListener bean 初始化?

【问题讨论】:

  • 我找不到解决方案。我应该将 StreamListener 更改为 PolledConsumer 吗?如果是这种情况,虽然我将 yml config 设置为 batch-mode: true,但这次我不能将记录作为批处理(列表)使用。我能够在 StreamListener 中进行批量消费。在民意调查的消费者中,有没有办法将“批量”数据作为列表消费?
  • 暂停和恢复消费者是否适合您?示例见此处:docs.spring.io/spring-cloud-stream-binder-kafka/docs/…

标签: apache-kafka spring-cloud-stream spring-cache spring-cloud-stream-binder-kafka


【解决方案1】:

您可以将绑定的autoStartup 设置为false,稍后使用BindingsEndpoint bean 启动绑定。

this answer

【讨论】:

  • 配置 autostartup = false 并应用执行器的 BindingsEndpoint start 解决了问题。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2019-01-23
  • 2019-04-25
  • 2020-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-17
  • 1970-01-01
相关资源
最近更新 更多