X-Git-Url: https://juplo.de/gitweb/?p=demos%2Fkafka%2Foutbox;a=blobdiff_plain;f=postage%2Fsrc%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2Foutbox%2Fpostage%2FOutboxListener.java;fp=postage%2Fsrc%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2Foutbox%2Fpostage%2FOutboxListener.java;h=abb350a6e9e556f856dc4bba04032b69009a2c0c;hp=0000000000000000000000000000000000000000;hb=fbd0ca0df5004d13a5e93cdb8373bafc60440c8b;hpb=bdc7b089e14ddc16f7e76f6a736b27b608e35ab4 diff --git a/postage/src/main/java/de/juplo/kafka/outbox/postage/OutboxListener.java b/postage/src/main/java/de/juplo/kafka/outbox/postage/OutboxListener.java new file mode 100644 index 0000000..abb350a --- /dev/null +++ b/postage/src/main/java/de/juplo/kafka/outbox/postage/OutboxListener.java @@ -0,0 +1,34 @@ +package de.juplo.kafka.outbox.postage; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Component; +import org.springframework.transaction.event.TransactionPhase; +import org.springframework.transaction.event.TransactionalEventListener; + + +@Component +@AllArgsConstructor +public class OutboxListener +{ + private final OutboxRepository repository; + private final ObjectMapper mapper; + + + @TransactionalEventListener(phase = TransactionPhase.BEFORE_COMMIT) + public void onUserEvent(OutboxEvent event) + { + try + { + repository.save( + event.getKey(), + mapper.writeValueAsString(event.getValue()), + event.getTime()); + } + catch (JsonProcessingException e) + { + throw new RuntimeException(e); + } + } +}