1 package de.juplo.kafka.outbox.polling;
3 import org.slf4j.Logger;
4 import org.slf4j.LoggerFactory;
5 import org.springframework.context.event.EventListener;
6 import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
7 import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
8 import org.springframework.jdbc.core.namedparam.SqlParameterSource;
9 import org.springframework.stereotype.Component;
10 import org.springframework.transaction.event.TransactionPhase;
11 import org.springframework.transaction.event.TransactionalEventListener;
16 public class UserEventListener
18 private static final Logger LOG = LoggerFactory.getLogger(UserEventListener.class);
20 private final NamedParameterJdbcTemplate jdbcTemplate;
23 public UserEventListener(NamedParameterJdbcTemplate jdbcTemplate)
25 this.jdbcTemplate = jdbcTemplate;
29 @TransactionalEventListener(phase = TransactionPhase.BEFORE_COMMIT)
30 public void onUserEvent(UserEvent event)
32 LOG.info("{}: {}", event.type, event.user);
33 SqlParameterSource parameters =
34 new MapSqlParameterSource(Map.of("event", event.type.toInt(), "username", event.user));
35 jdbcTemplate.update("INSERT INTO events(event, username) VALUES(:event, :username)", parameters);