Message.format.version relevance for clients

I’m having a problem understanding the message.format.version attribute in the topic configuration. In the documentation
it’s mentioned that:

Setting this value incorrectly will cause consumers with older versions to break as they will receive messages with a format that they don’t understand

But as far as I checked, any client works with any message format (the oldest I checked was with librdkafka 0.11.6). So I don’t understand what Setting this value incorrectly means :thinking:

I have 3 questions:

  • Do I understand correctly that setting message.format.version in the topic configuration will just potentially make no conversions happen? For example: Running Kafka 2.8.0 but knowing that my client uses format 1.0, I can set 1.0 message.format.version in the topic and hence avoid conversion?
  • are message formats after 0.11.0 the same? Does conversion happen if you have message.format.version = 0.11.0 but use one of the newest clients, like 2.8.0? Looking at the source code it seems like it doesn’t.
  • Can you change the message.format.version in an existing topic, and what happens then? Are the new messages kept in the same format but new produced with a new one?

I am aware of the same setting present in the brokers configuration and it’s use when migrating from versions older than 0.10.0.

I can’t find a good read on this attribute in the topic configuration, so I would really appreciate any hints! Cheers :slight_smile: