使用队列和事务实现采集数据实例流程

简介: 使用队列和事务实现采集数据实例流程

采集数据实例流程

1,加入队列消费queuePlayer($array)具体业务方法

2,业务方法说明:使用事务,处理采集数据,处理业务逻辑,

3,日志添加

补充,队列使用可以查看上一篇文章 my.oschina.net/owenzhang24…

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;
        }
    }

目录
相关文章
|
消息中间件 存储 监控
Flume+Kafka整合案例实现
Flume+Kafka整合案例实现
532 1
|
Ubuntu Linux Shell
C++ 之 perf+火焰图分析与调试
【11月更文挑战第6天】在遇到一些内存异常的时候,经常这部分的代码是很难去进行分析的,最近了解到Perf这个神器,这里也展开介绍一下如何使用Perf以及如何去画火焰图。
498 5
|
存储 开发框架 Java
什么是Spring?什么是IOC?什么是DI?IOC和DI的关系? —— 零基础可无压力学习,带源码
文章详细介绍了Spring、IOC、DI的概念和关系,解释了控制反转(IOC)和依赖注入(DI)的原理,并提供了IOC的代码示例,阐述了Spring框架作为IOC容器的应用。
950 1
什么是Spring?什么是IOC?什么是DI?IOC和DI的关系? —— 零基础可无压力学习,带源码
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活的重要组成部分。本文将深入探讨网络安全的各个方面,包括网络安全漏洞、加密技术以及安全意识等。我们将从简单的概念开始,逐步深入到更复杂的技术和策略,以帮助读者更好地理解和应对网络安全挑战。
173 32
|
运维 Kubernetes Cloud Native
Nacos 在云原生架构下的演进
Nacos 在云原生架构下的演进
638 88
|
Dubbo Java 应用服务中间件
3.Dubbo
3.Dubbo
84 1
|
JavaScript 前端开发 开发者
vue实例、指令、生命周期
vue实例、指令、生命周期
139 1
|
Web App开发 前端开发 容器
|
弹性计算 安全 关系型数据库
企业如何用阿里云上云搭建公司网站
企业上云是比较热门的话题也是趋势,越来越多的企业放弃传统IDC选择上云,告诉你企业为什么要上云?企业上云的好处和优势有哪些
|
容器 Perl Kubernetes
带你读《Kubernetes进阶实战》之二:Kubernetes快速入门
本书几乎涵盖了应用Kubernetes系统的所有主流知识点,它甚至可以作为计划考取CKA认证的读者的配套参考图书。
2556 0