事务流程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 :)

305ed5e0fa2c04f0b55d1a2f871ae12b.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值