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);
|
}
|
}
|
}
|