Devo pubblicare eventi di notifica su sistemi esterni su JMS, quando i dati vengono aggiornati. Id come questo deve essere fatto all'interno della stessa transazione in cui gli oggetti sono impegnati nel database per garantire l'integrità.Gestire gli eventi di applicazione di dati a molla nella transazione
Gli eventi ApplicationLifecycle che emettono spring-data-rest sembra il luogo logico per implementare questa logica.
@org.springframework.transaction.annotation.Transactional
public class TestEventListener extends AbstractRepositoryEventListener<Object> {
private static final Logger LOG = LoggerFactory.getLogger(TestEventListener.class);
@Override
protected void onBeforeCreate(Object entity) {
LOG.info("XXX before create");
}
@Override
protected void onBeforeSave(Object entity) {
LOG.info("XXX before save");
}
@Override
protected void onAfterCreate(Object entity) {
LOG.info("XXX after create");
}
@Override
protected void onAfterSave(Object entity) {
LOG.info("XXX after save");
}
}
Tuttavia, questi eventi si verificano prima e dopo l'inizio e il commit del tx.
08 15:32:37.119 [http-nio-9000-exec-1] INFO n.c.v.vcidb.TestEventListener - XXX before create
08 15:32:37.135 [http-nio-9000-exec-1] TRACE o.s.t.i.TransactionInterceptor - Getting transaction for [org.springframework.data.jpa.repository.support.SimpleJpaRepository.save]
08 15:32:37.432 [http-nio-9000-exec-1] TRACE o.s.t.i.TransactionInterceptor - Completing transaction for [org.springframework.data.jpa.repository.support.SimpleJpaRepository.save]
08 15:32:37.479 [http-nio-9000-exec-1] INFO n.c.v.vcidb.TestEventListener - XXX after create
Cosa punto di estensione fa primavera-dati-resto hanno per l'aggiunta di un comportamento che eseguirà all'interno della transazione primavera gestito?
Avete capito questo? Affrontare lo stesso problema adesso. – Daniel
Nessuna soluzione ancora ho paura. –