import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.kafka.support.serializer.JsonSerializer;
import java.util.Properties;
props.put("linger.ms", properties.getLingerMs());
props.put("compression.type", properties.getCompressionType());
props.put("key.serializer", StringSerializer.class.getName());
- props.put("value.serializer", JsonSerializer.class.getName());
- props.put(JsonSerializer.TYPE_MAPPINGS,
- "ADD:" + AddNumberMessage.class.getName() + "," +
- "CALC:" + CalculateSumMessage.class.getName());
+ // TODO: Der value.serializer soll auf den JsonSerializer umgestellt werden!
+ props.put("value.serializer", StringSerializer.class.getName());
return new KafkaProducer<>(props);
}
@RequestHeader(name = "X-id", required = false) Long correlationId,
@RequestBody Integer number)
{
+ // Der Service verschickt für eine Zahl n immer n+1 Nachrichten.
+ //
+ // TODO:
+ //
+ // Diese Implementierung schickt Strings:
+ // Für n=3 z.B.:
+ // "1"
+ // "2"
+ // "3"
+ // "CALC"
+ //
+ // Nach der Umstellung auf JSON, sollen die JSON-Repräsentation
+ // der Klassen AddNumberMessage und CalcNumberMessage versendet
+ // werden.
+ // Für n=3 z.B.:
+ // ADD: { "number": 3, "next": 1 }
+ // ADD: { "number": 3, "next": 2 }
+ // ADD: { "number": 3, "next": 3 }
+ // CALC: { "number": 3 }
+ // Dabei gibt der String vor dem ":" das Type-Mapping an
+ // das verwendet werden soll.
+
ResultRecorder result = new ResultRecorder(number+1);
for (int i = 1; i <= number; i++)
{
- send(key, new AddNumberMessage(number, i), correlationId, result);
+ // TODO:
+ // Senden Sie
+ // new AddNumberMessage(number, i) <-- Type-Mapping: ADD
+ // anstatt
+ // Integer.valueOf(i)
+ send(key, String.valueOf(i), correlationId, result);
}
- send(key, new CalculateSumMessage(number), correlationId, result);
+ // TODO:
+ // Senden Sie
+ // new CalculateSumMessage(number) <-- Type-Mapping: CALC
+ // anstatt
+ // "CALC"
+ send(key, "CALC", correlationId, result);
return result.getDeferredResult();
}