@RequiredArgsConstructor
@Slf4j
-public class ApplicationRecordHandler implements RecordHandler<String, String>
+public class ApplicationRecordHandler implements RecordHandler<String, Message>
{
private final AdderResults results;
private final Optional<Duration> throttle;
@Override
- public void accept(ConsumerRecord<String, String> record)
+ public void accept(ConsumerRecord<String, Message> record)
{
Integer partition = record.partition();
String user = record.key();
- String message = record.value();
+ Message message = record.value();
- if (message.equals("CALCULATE"))
+ switch(message.getType())
{
- AdderResult result = state.get(partition).calculate(user);
- log.info("{} - New result for {}: {}", id, user, result);
- results.addResults(partition, user, result);
- }
- else
- {
- state.get(partition).addToSum(user, Integer.parseInt(message));
+ case ADD:
+ MessageAddNumber addNumber = (MessageAddNumber)message;
+ state.get(partition).addToSum(user, addNumber.getNext());
+ break;
+
+ case CALC:
+ AdderResult result = state.get(partition).calculate(user);
+ log.info("{} - New result for {}: {}", id, user, result);
+ results.addResults(partition, user, result);
+ break;
}
if (throttle.isPresent())