业务执行完成后,需发送文件
异步调用好处
1.解耦
2.提高系统的并发性能和响应速度
/**
* 对接财务中台,文件数据推送时的event
* 审单后推送指定的一些文件
*/
@Getter
@Setter
@ToString
public class FinFileEvent extends ApplicationEvent {
private MpBusiOrder busiOrder;
public FinFileEvent(Object source) {
super(source);
}
public FinFileEvent(Object source, MpBusiOrder busiOrder){
super(source);
this.busiOrder = busiOrder;
}
}
/**
* 推送文件时的监听器
*/
@Component
@Slf4j
@RequiredArgsConstructor
public class FinFileEventListener implements ApplicationListener<FinFileEvent> {
private final MpBusiOrderService mpBusiOrderService;
@Override
public void onApplicationEvent(FinFileEvent finFileEvent) {
MpBusiOrder busiOrder = finFileEvent.getBusiOrder();
log.info("-----审单后推送指定文件到财务中台开始,订单ID:{}-----",busiOrder.getId());
// 推送订单和费用数据到财务中台
Result<FinResponse> orderAndFeeToFin = mpBusiOrderService.pushFileToFin(busiOrder);
log.info("审单后推送指定文件到财务中台响应结果:{}", JSON.toJSONString(orderAndFeeToFin));
log.info("-----审单后推送推送指定文件到财务中台结束,订单ID:{}-----",busiOrder.getId());
}
}
调用异步执行方法
@Service("mpDocMblRefService")
@Slf4j
public class MpDocMblRefServiceImpl implements MpDocMblRefService {
// 注入SpringBoot容器
@Autowired
private ApplicationContext applicationContext;
@Override
public String event( @PathVariable String str ){
// 容器推送一个事件, 推送自定义事件
applicationContext.publishEvent(new FinFileEvent(this, mpBusiOrder));
return str;
}
}