簡體   English   中英

Kafka Stream StateStore死循環

[英]Kafka Stream StateStore infinite loop

我們有一個 KStream 應用程序,它使用內存中的 KV StateStore 但禁用了更改日志。

  String stateStoreName = "statestore-v1";
  StoreBuilder<KeyValueStore<String, Event>> keyValueStoreBuilder =
      Stores.keyValueStoreBuilder(Stores.inMemoryKeyValueStore(stateStoreName), 
          Serdes.String(), new JsonSerde<>(Event.class));
  keyValueStoreBuilder.withLoggingDisabled();
  streamsBuilder.addStateStore(keyValueStoreBuilder);

我們現在想要啟用具有不同配置和不同名稱的更改日志。

  String stateStoreName = "statestore-v2";
  StoreBuilder<KeyValueStore<String, Event>> keyValueStoreBuilder =
      Stores.keyValueStoreBuilder(Stores.inMemoryKeyValueStore(stateStoreName), 
          Serdes.String(), new JsonSerde<>(Event.class));
  Map<String, String> changelogConfig = new HashMap<>();
  changelogConfig.put("retention.ms", "43200000"); // 12 hours
  changelogConfig.put("cleanup.policy", "delete");
  changelogConfig.put("auto.offset.reset", "latest");
  keyValueStoreBuilder.withLoggingEnabled(changelogConfig);
  streamsBuilder.addStateStore(keyValueStoreBuilder);

當我們運行我們的應用程序時,我們進入了帶有這些消息的無限循環:

2022-10-11 13:02:32.761 app=myapp INFO 54561 --- [-StreamThread-3]
o.a.k.s.p.i.StoreChangelogReader : stream-thread [myapp-StreamThread-3] 
End offset for changelog myapp-statestore-v2-changelog-4 cannot be found; 
will retry in the next time.
2022-10-11 13:02:32.761 app=myapp INFO 54561 --- [-StreamThread-3] 
o.a.k.clients.consumer.KafkaConsumer : [Consumer clientId=myapp-StreamThread-3-restore-consumer, groupId=null] 
Unsubscribed all topics or patterns and assigned partitions

似乎從未創建過更改日志主題......至少kafka-topics沒有顯示它。

我正在使用 io.confluent 包版本 7.2.2-ccs,我認為它轉換為 Apache Kafka 版本 3.2.x

關於如何修復無限循環並創建更新日志主題的任何想法?

謝謝!

無限循環是因為我們正在進行藍/綠部署。 我們了解到,如果我們正在使用 StateStore 進行任何更改(配置或禁用/重新啟用更改日志),我們將無法執行此操作。

我們只是完全關閉了舊版本,然后部署了新版本。 效果很好。

另一種選擇是使用 OneKricketeer 建議的kafka-streams-application-reset工具。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM