標籤:
一般寫在Controller裡面
@ResponseBody
@RequestMapping("/logOutCaigou")
public boolean logOutCaigou(ModelAndView mav, @Param("memberId")Long memberId, @Param("openId")String openId) {
saveLoginLog(openId, memberId, LoginLog.LOGOUT); //儲存登出日誌
return true;
}
//開啟非同步記日誌
啟動非同步線程。、,後台執行任務。任務開啟後,就return直接返回
不需要等待任務執行完成
private void saveLoginLog(final String openId, final long memberId, int type) {
ExecutorService exec = Executors.newSingleThreadExecutor(); //開啟非同步單例線程
exec.execute(new Runnable() {
public void run() {
iLoginLogService.saveLoginLog(openId, memberId, LoginLog.LOGIN); //儲存登入日誌
}
});
return;
}
Service裡面
@Override
@TradingDataSource(name = DataSources.WRITE_WECHAT_DATASOURCE)
public boolean saveLoginLog(String openId, long memberId, int type) throws ServiceException {
LoginLog loginLog = new LoginLog();
loginLog.setId(sequenceUtil.getSeqNextVal("seq_login_log"));
loginLog.setOpenId(openId);
loginLog.setMemberId(memberId);
loginLog.setState(type);
String key = CaigouConstant.CACHEKEY_ADDRESS_PREFIX + openId;
cacheManagerDao.set(key, "北京北京"); //儲存詳細地址
loginLog.setDeviceMessage(cacheManagerDao.get(key).toString());
iLoginLogDao.saveLoginLog(loginLog);
return true;
}
java中開啟非同步任務