我有一个SpringBoot应用程序,其中有两个通过Spring Cloud映射的流处理器。每个处理器都有自己的@StreamListener来处理不同的主题。一个处理器将聚合数据写入可隔离状态存储。通过@Service获取数据时,我在单元测试中遇到了问题(服务从状态存储中获取聚合数据)。由于某些原因,有时会捕获异常:
org.apache.kafka.streams.errors.InvalidStateStoreException: the state store, recently-played-store, may have migrated to another instance.
at org.apache.kafka.streams.state.internals.QueryableStoreProvider.getStore(QueryableStoreProvider.java:60)
at org.apache.kafka.streams.KafkaStreams.store(KafkaStreams.java:1043)
at org.springframework.cloud.stream.binder.kafka.streams.QueryableStoreRegistry.getQueryableStoreType(QueryableStoreRegistry.java:47)
当我从另一个处理器中删除StreamListener时,一切正常且稳定。
如何使用适当的处理器为精确实例绑定状态存储?
答案 0 :(得分:0)
我已经找到解决问题的方法,也许会对其他人有所帮助。 我没有使用spring-cloud-stream-binder-kafka-streams的最新版本。我的版本是2.0.0,它有一个错误https://github.com/spring-cloud/spring-cloud-stream-binder-kafka/issues/366。仅在版本2.0.1中已修复