当服务器接口之间通讯中,如果A服务器请求B服务器,只返回请求通讯成功且不需要实时返回业务成功或失败时,处理成功或者失败用异步通知方式,那么可以采用线程池或者消息队列
业务场景:金融业务中的强风控,还款等等
重点:如果需要同步通知业务成功或失败,让A服务器提供通知接口,在服务器B线程中可以同步通知服务器A中的接口 累计金融业务弱风控
代码如下:
/** * @author stone * @date 2019-03-21 16:20:21 */ @Service public class ExceutorTestServiceImpl implements ExceutorTestService{ @Resource SlUserMapper slUserMapper; private ExecutorService executorService = Executors.newFixedThreadPool(5); Logger logger = LoggerFactory.getLogger(ExceutorTestServiceImpl.class); @Override public void exceutorTest() { logger.info("部分业务有线程来处理,无需返回结果,可以拋出异常全局捕获即可"); SubmitStrongRiskTask task = new SubmitStrongRiskTask(1l, BigDecimal.valueOf(10l)); executorService.execute(task); logger.info("继续做其他业务"); } class SubmitStrongRiskTask implements Runnable { private Long userId; private BigDecimal amount; SubmitStrongRiskTask(Long userId, BigDecimal amount) { this.userId = userId; this.amount = amount; } @Override public void run() { SlUser slUser = slUserMapper.getUserById(16l); logger.info("用户手机号码是:"+ slUser.getMobile()); } } } 打印日志如下:
192.168.3.78 部分业务有线程来处理,无需返回结果,可以拋出异常全局捕获即可 192.168.3.78 继续做其他业务 192.168.3.78 用户手机号码是:15576602451