{
@Bean
public ExampleConsumer exampleConsumer(
- Consumer<String, String> kafkaConsumer,
+ Consumer<String, String> kafkaConsumer, // << TODO: Typisierung anpassen
ApplicationProperties properties,
ConfigurableApplicationContext applicationContext)
{
}
@Bean(destroyMethod = "")
+ // TODO: Typisierung anpassen
public KafkaConsumer<String, String> kafkaConsumer(ApplicationProperties properties)
{
Properties props = new Properties();
props.put("metadata.maxage.ms", 5000); // 5 Sekunden
props.put("partition.assignment.strategy", StickyAssignor.class.getName());
props.put("key.deserializer", StringDeserializer.class.getName());
- props.put("value.deserializer", StringDeserializer.class.getName());
+ props.put("value.deserializer", StringDeserializer.class.getName()); // << TODO: Passende Strategie konfigurieren
return new KafkaConsumer<>(props);
}
{
private final String id;
private final String topic;
- private final Consumer<String, String> consumer;
+ private final Consumer<String, String> consumer; // << TODO: Typisierung anpassen
private final Thread workerThread;
private final Runnable closeCallback;
try
{
log.info("{} - Subscribing to topic {}", id, topic);
- consumer.subscribe(Arrays.asList(topic));
+ // TODO: Aufruf von consumer.subscribe()
while (true)
{
- ConsumerRecords<String, String> records = consumer.poll(Duration.ofSeconds(1));
-
- log.info("{} - Received {} messages", id, records.count());
- for (ConsumerRecord<String, String> record : records)
- {
- handleRecord(
- record.topic(),
- record.partition(),
- record.offset(),
- record.key(),
- record.value());
- }
+ // TODO: Poll & Consume aus Ihrer bisherigen Implementierung
+ // TODO: Verarbeitung abhängig vom Typ der Nachricht auslösen
+ // switch (value.getType())
+ // {
+ // case ADD -> addNumber((MessageAddNumber)value);
+ // case CALC -> calcSum((MessageCalculateSum)value);
+ // default -> log.error("{} - Ignoring message of unknown typ {}", id, value.getType());
+ //}
}
}
catch(WakeupException e)
}
}
- private void handleRecord(
- String topic,
- Integer partition,
- Long offset,
- String key,
- String value)
- {
- consumed++;
- log.info("{} - partition={}-{}, offset={}: {}={}", id, topic, partition, offset, key, value);
- // switch (value.getType())
- // {
- // case ADD -> addNumber((MessageAddNumber)value);
- // case CALC -> calcSum((MessageCalculateSum)value);
- // default -> log.error("{} - Ignoring message of unknown typ {}", id, value.getType());
- //}
- }
-
private void addNumber(MessageAddNumber addNumber)
{
log.info("{} - Adding number {}", id, addNumber.getNext());