Tôi cần xuất bản các sự kiện thông báo cho các hệ thống bên ngoài qua JMS, khi dữ liệu được cập nhật. Id như thế này được thực hiện trong cùng một giao dịch khi các đối tượng được cam kết với cơ sở dữ liệu để đảm bảo tính toàn vẹn.Xử lý các sự kiện ứng dụng phần còn lại dữ liệu trong giao dịch
Các sự kiện ApplicationLifecycle phát hiện phần còn lại dữ liệu vào mùa xuân có vẻ như là nơi hợp lý để triển khai logic này.
@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");
}
}
Tuy nhiên, những sự kiện này xảy ra trước và sau khi bắt đầu và cam kết.
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
Điểm mở rộng dữ liệu của mùa xuân có thêm hành vi sẽ thực hiện trong giao dịch mùa xuân được quản lý không?
Bạn đã figured này ra? Đối mặt với cùng một vấn đề ngay bây giờ. – Daniel
Không có giải pháp nào nhưng tôi sợ. –