1 package de.juplo.kafka;
3 import lombok.extern.slf4j.Slf4j;
4 import org.apache.kafka.clients.consumer.ConsumerRecord;
6 import java.util.HashMap;
11 public class SumRecordHandler implements RecordHandler<String, String>
13 private final Map<Integer, Map<String, List<Long>>> seen = new HashMap<>();
14 private final Map<Integer, SumBusinessLogic> state = new HashMap<>();
18 public void accept(ConsumerRecord<String, String> record)
20 Integer partition = record.partition();
21 String user = record.key();
22 String message = record.value();
26 state.get(partition).startSum(user);
30 Long result = state.get(partition).endSum(user);
31 log.info("New result for {}: {}", user, result);
35 state.get(partition).addToSum(user, Integer.parseInt(message));
40 protected void addPartition(Integer partition, StateDocument document)
42 this.seen.put(partition, document.seen);
43 this.state.put(partition, new SumBusinessLogic(document.state));
46 protected StateDocument removePartition(Integer partition)
48 return new StateDocument(
50 this.state.remove(partition).getState(),
51 this.seen.remove(partition));
55 public Map<Integer, Map<String, List<Long>>> getSeen()