如何设置state store changelog主题的max.message.bytes?

siv3szwd  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(388)

我有一个kafka流应用程序,它的消息高达10mib。我想将这些消息保存在状态存储中,但kafka streams无法生成到内部changelog主题:

2017-11-17 08:36:19,792 ERROR RecordCollectorImpl - task [4_5] Error sending record to topic appid-statestorename-state-store-changelog. No more offsets will be recorded for this task and the exception will eventually be thrown
org.apache.kafka.common.errors.RecordTooLargeException: The request included a message larger than the max message size the server will accept.
2017-11-17 08:36:20,583 ERROR StreamThread - stream-thread [StreamThread-1] Failed while executing StreamTask 4_5 due to flush state:

通过添加一些日志,它看起来像是默认的 max.message.bytes 内部主题的设置是1mib。
默认值 max.message.bytes 因为集群被设置为50mib。
有没有可能调整kafka streams应用程序内部主题的配置?
解决方法是启动streams应用程序,让它创建主题,然后更改主题配置。但这感觉像是一个肮脏的黑客。

./kafka-topics.sh --zookeeper ... \
      --alter --topic appid-statestorename-state-store-changelog \
      --config max.message.bytes=10485760
ckx4rj1h

ckx4rj1h1#

Kafka 1.0 允许通过为内部主题指定自定义主题属性 StreamsConfig .
这些配置的前缀是 "topic." 并且可以使用中定义的任何配置 TopicConfig .
有关更多详细信息,请参见原始kip:
https://cwiki.apache.org/confluence/display/kafka/kip-173%3a+add+prefix+to+streamsconfig+to+enable+setting+default+internal+topic+configs

相关问题