Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. StreamsConfig
    1. Deprecate default.windowed.key.serde.inner and default.windowed.value.serde.inner
    2. Introduce a new config called windowedwindow.deserializer.inner.class.deserializer. This way, the config comes closer to the window.size.ms config introduced in KIP-659 and it also emphasises that the config isn't really a default one. Also, as per the proposed changes below, this config is to be used really from the console consumer so we will use Deserialiser class here directly instead of a Serde. Note that setting this config from KafkaStreams application would lead to an error being thrown as this config is to be used only from plain Consumer Client.
  2. ConsoleConsumer
    1. It would be mandatory to pass windowed.deserializer window.inner.class.deserializer and window.size.ms config. 
  3. TimeWindowedDeserializer
    1. If the users want to run Console consumer for testing purposes, then it will invoke the default constructor of TimeWindowedDeserializer. We will ensure that both the configs (windowSize and deserialiser class) are set and if they aren't then an error would be thrown. 
    2. For any other plain consumer client, the user can pass them in as configs OR pass the parameters to the TimeWindowedDeserializer constructor, and then pass that object to the consumer. It is ok for the user to pass both as long as there is no conflict between the params passed via constructor and via the configs.
    3. For use in Kafka Streams (such as the DSL), the user must supply the parameters by constructing a TimeWindowedSerde and passing that in as a parameter to any relevant DSL operators. This is already supported so no change is needed here.
  4. Similar to the checks added in KIP-659 to validate the windownSize config, a check would be added for deserialiserInnerClass. This would ensure that it has only 1 valid value.

...

  • StreamsConfig:
    • Deprecate default.windowed.key.serde.inner and default.windowed.value.serde.inner in StreamConfig
    • Introduce a new config called windowed.deserializerwindow.inner.class.deserializer. 


      Code Block
      languagejava
      themeMidnight
          public static final String WINDOWED_DESERIALISER_INNER_CLASS_DESERIALISER = "windowedwindow.deserializer.inner.class.deserializer";
          private static final String WINDOWED_DESERIALISER_INNER_CLASS_DESERIALISER_DOC = " Deserializer for the inner class of a windowed record. Must implement the " +
              "<code>org.apache.kafka.common.serialization.Deserializer</code> interface. Note that setting this config in KafkaStreams application would result " + 
      		"in and error as it is meant to be used only from Plain consumer client.";
      
      	@Deprecated
      	public static final String DEFAULT_WINDOWED_KEY_SERDE_INNER_CLASS = "default.windowed.key.serde.inner";
      
      	@Deprecated
      	public static final String DEFAULT_WINDOWED_VALUE_SERDE_INNER_CLASS = "default.windowed.value.serde.inner";


...