import org.springframework.context.annotation.Configuration;
import org.springframework.kafka.support.serializer.JsonDeserializer;
import org.springframework.kafka.support.serializer.JsonSerde;
-import org.springframework.kafka.support.serializer.JsonSerializer;
import java.util.Properties;
import java.util.concurrent.CompletableFuture;
public class CounterApplicationConfiguriation
{
@Bean
- public Properties streamProcessorProperties(CounterApplicationProperties counterProperties)
+ public Properties streamProcessorProperties(
+ CounterApplicationProperties counterProperties)
{
- Properties propertyMap = new Properties();
+ Properties propertyMap = serializationConfig();
propertyMap.put(StreamsConfig.APPLICATION_ID_CONFIG, counterProperties.getApplicationId());
propertyMap.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, counterProperties.getBootstrapServer());
- propertyMap.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, JsonSerde.class.getName());
- propertyMap.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, JsonSerde.class.getName());
- propertyMap.put(JsonSerializer.ADD_TYPE_INFO_HEADERS, false);
- propertyMap.put(JsonDeserializer.TRUSTED_PACKAGES, CounterApplication.class.getPackageName());
- propertyMap.put(JsonDeserializer.KEY_DEFAULT_TYPE, Word.class.getName());
- propertyMap.put(JsonDeserializer.VALUE_DEFAULT_TYPE, Word.class.getName());
- propertyMap.put(JsonDeserializer.USE_TYPE_INFO_HEADERS, false);
propertyMap.put(StreamsConfig.STATE_DIR_CONFIG, "target");
if (counterProperties.getCommitInterval() != null)
propertyMap.put(StreamsConfig.COMMIT_INTERVAL_MS_CONFIG, counterProperties.getCommitInterval());
return propertyMap;
}
+ static Properties serializationConfig()
+ {
+ Properties propertyMap = new Properties();
+
+ propertyMap.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, JsonSerde.class.getName());
+ propertyMap.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, JsonSerde.class.getName());
+ propertyMap.put(JsonDeserializer.TRUSTED_PACKAGES, CounterApplication.class.getPackageName());
+ propertyMap.put(JsonDeserializer.KEY_DEFAULT_TYPE, Word.class.getName());
+ propertyMap.put(JsonDeserializer.VALUE_DEFAULT_TYPE, Word.class.getName());
+ propertyMap.put(
+ JsonDeserializer.TYPE_MAPPINGS,
+ "word:" + Word.class.getName() + "," +
+ "counter:" + WordCounter.class.getName());
+ propertyMap.put(JsonDeserializer.REMOVE_TYPE_INFO_HEADERS, Boolean.FALSE);
+
+ return propertyMap;
+ }
+
@Bean(initMethod = "start", destroyMethod = "stop")
public CounterStreamProcessor streamProcessor(
CounterApplicationProperties applicationProperties,