Muszę publikować zdarzenia powiadomień do systemów zewnętrznych przez JMS, gdy dane są aktualizowane. Należy to zrobić w ramach tej samej transakcji, ponieważ obiekty są zatwierdzone do bazy danych w celu zapewnienia integralności.Obsługa zdarzeń aplikacji związanych ze sprężyną i danymi w ramach transakcji
Zdarzenia ApplicationLifecycle, które emitują dane z wiosny, wydają się logicznym miejscem do wdrożenia tej logiki.
@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");
}
}
Jednak te zdarzenia mają miejsce przed i po uruchomieniu tx i zatwierdzeniu.
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
Jaki punkt rozszerzenia ma spring-data-rest dla dodania zachowania, które zostanie wykonane w ramach wiosennej transakcji zarządzanej?
Czy to zorientowali się? Stając wobec tego samego problemu w tej chwili. – Daniel
Brak rozwiązania, jak się obawiam. –