package jnpf.limsService.listener; import jnpf.limsService.LimsMessageService; import jnpf.limsService.event.LimsMessageDispatchEvent; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.transaction.event.TransactionPhase; import org.springframework.transaction.event.TransactionalEventListener; @Slf4j @Component @RequiredArgsConstructor public class LimsMessageDispatchListener { private final LimsMessageService messageService; @Value("${lims.message.enabled:false}") private boolean enabled; @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT, fallbackExecution = true) public void handle(LimsMessageDispatchEvent event) { if (!enabled) { log.info("[lims-message-dispatch] skipped because lims.message.enabled=false, event={}, bizId={}", event.getRequest().getEvent().getCode(), event.getRequest().getBizId()); return; } try { messageService.send(event.getRequest()); } catch (Exception e) { log.error("[lims-message-dispatch] event dispatch failed event={}, bizId={}", event.getRequest().getEvent().getCode(), event.getRequest().getBizId(), e); } } }