private List<Event<Long>> convertEvent(List<OrderRawEvent> rawEvents) { return rawEvents.stream().map(rawEvent -> { Event<Long> event = null; try { event = (Event) objectMapper.readValue(rawEvent.getPayload(), Class.forName(rawEvent.getType())); } catch (IOException | ClassNotFoundException e) { String exceptionMessage = String.format("Event Object Convert Error : {} {}", rawEvent.getSeq(), rawEvent.getType(), rawEvent.getPayload()); log.error(exceptionMessage, e); } return event; }).collect(Collectors.toList()); }
@org.springframework.kafka.annotation.KafkaListener(id = "product-consumer-group", topics = "product-event-topic") public void productEventListener(String message) { log.debug("receive message : {}", message); try { OrderRawEvent rawEvent = objectMapper.readValue(message, OrderRawEvent.class); final Class<?> eventType = Class.forName(rawEvent.getType()); final Event event = (Event) objectMapper.readValue(rawEvent.getPayload(), eventType); // this.handle(event); eventProjector.handle(event); } catch (Exception e) { log.warn(e.getMessage(), e); } }
@org.springframework.kafka.annotation.KafkaListener(id = "order-consumer-group", topics = "order-event-topic") public void orderEventListener(String message) { log.debug("receive message from order : {}", message); try { OrderRawEvent rawEvent = objectMapper.readValue(message, OrderRawEvent.class); final Class<?> eventType = Class.forName(rawEvent.getType()); final Event event = (Event) objectMapper.readValue(rawEvent.getPayload(), eventType); //this.handle(event); eventProjector.handle(event); } catch (IOException | ClassNotFoundException e) { log.warn(e.getMessage(), e); } } }
public long save(OrderRawEvent commonRawEvent) { StringBuilder query = new StringBuilder(); query.append(format("INSERT INTO %s ", TABLE_NAME)); query.append(" ( identifier, type, version, payload, created ) "); query.append(" VALUES ( ?, ?, ?, ?, ? ) "); KeyHolder keyHolder = new GeneratedKeyHolder(); jdbcTemplate.update(connection -> { PreparedStatement statement = connection.prepareStatement(query.toString(), Statement.RETURN_GENERATED_KEYS); int idx = 0; statement.setLong(++idx, commonRawEvent.getIdentifier()); statement.setString(++idx, commonRawEvent.getType()); statement.setLong(++idx, commonRawEvent.getVersion()); statement.setString(++idx, commonRawEvent.getPayload()); statement.setTimestamp(++idx, convertLocalDateTimeToTimestamp(commonRawEvent.getCreated())); return statement; }, keyHolder); return keyHolder.getKey().longValue(); }