事务流程java怎么实现_使用队列和事务实现采集数据实例流程
采集數據實例流程
1,加入隊列消費queuePlayer($array)具體業務方法
2,業務方法說明:使用事務,處理采集數據,處理業務邏輯,
3,日志添加
private $user = '';
private $secret = '';
private $url = 'open.baiduapi.com/api/football/';
/*
* @array 傳入過來一個球隊信息的數組
* @return bool 成功返回true ,失敗返回false
*/
public function __construct()
{
$this->user = Env::get('nami.user');
$this->secret = Env::get('nami.secret');
}
/*
* 球員隊列消費
*/
public function queuePlayer($array)
{
if (empty($array)) {
Log::error('球員數據不能為空:' . json_encode($array, JSON_UNESCAPED_UNICODE));
return false;
}
$http = new Http();
$playerRequest = $http->doGet($this->url . "?user=$this->user");
$playerData = json_decode($playerRequest, true);
if (empty($playerData)) {
Log::error("球員ID:{$array['id']}.信息異常,接口返回" . json_encode($playerRequest, JSON_UNESCAPED_UNICODE));
return false;
}
//走事務
Db::startTrans();
try {
$playerInfo = $model->getPlayerInfo($array['id']);
if (empty($playerInfo)) {
//球員基本信息,添加
$data = [
'nami_player_id' => $array['id'],
'nami_team_id' => $playerData['team_id'],
];
$model->InsertPlayerAll($data);
} else {
//更新數據--球員的基本信息
$data = [
'nami_team_id' => $playerData['team_id'],
'name' => $playerData['name_zh'],
];
$model->UpdatePlayer($array['id'], $data);
}
//事務提交
Db::commit();
return true;
} catch (Exception $e) {
//錯誤日志提交
$error = json_encode([
'msg' => $e->getMessage(),
'line' => $e->getLine(),
], JSON_UNESCAPED_UNICODE);
Log::error("球員ID.{$array['id']}.采集錯誤!" . $error);
//回滾事務
Db::rollback();
return false;
}
}
Buy me a cup of coffee :)
總結
以上是生活随笔為你收集整理的事务流程java怎么实现_使用队列和事务实现采集数据实例流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 第一篇
- 下一篇: TDD实例