提问者:小点点

如何设置状态存储更新日志主题的max. message.bytes?


我有一个消息高达10MiB的Kafka Streams应用程序。我想将这些消息持久化在状态存储中,但Kafka Streams无法生成内部更新日志主题:

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应用程序内部主题的配置?

解决方法是启动流应用程序,让它创建主题,然后更改主题配置。但这感觉像是一个肮脏的黑客攻击。

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

共1个答案

匿名用户

Kafka1.0允许通过StreamsConfig为内部主题指定自定义主题属性。

您可以在这些配置前加上“topic.”,并且可以使用TopicConfig中定义的任何配置。

有关更多详细信息,请参阅原始KIP:

https://cwiki.apache.org/confluence/display/KAFKA/KIP-173:将前缀添加到StreamsConfig以启用设置默认内部主题配置