资讯专栏INFORMATION COLUMN

Laravel接入Apollo

xiaotianyi / 1581人阅读

摘要:废话不说,直接上代码守护进程阿波罗同步

废话不说,直接上代码

 "http://10.208.204.46:8161",

    "query" => [
        "app_id" => "wuc",
        "cluster" => "default",
        "namespace" => "application",
    ]

];

守护进程

namespace AppConsoleCommandsApollo;

use GuzzleHttpClient;
use IlluminateConsoleCommand;
use IlluminateSupportArr;
use IlluminateSupportFacadesStorage;

class SyncCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = "ue:apollo:sync";

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = "阿波罗同步";

    protected $config = [];

    protected $url;

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();

        $this->url = config("apollo.server") . "/configs/" . implode("/", array_values(config("apollo.query")));
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {


        $this->doSync();
    }


    protected function doSync()
    {

        $client = new Client(["timeout" => 2.00]);

        try {
            $response = $client->request("GET", $this->url);
            $body = json_decode($response->getBody()->getContents(), true);
            $cfg = Arr::get($body, "configurations", []);
            if (!$cfg) {
                return true;
            }
            $cfg = array_map(function ($value) {
                if ($row = json_decode($value, true)) {
                    return $row;
                }
                return $value;
            }, $cfg);

            $items = [];

            foreach ($cfg as $key => $value) {
                data_set($items, $key, $value);
            }

            foreach ($items as $k => $item) {
                $this->line("Saving [".$k."]");
                $this->save($k, $item);
            }

        } catch (Exception $ex) {
            $this->error($ex->getMessage());
        }

    }


    protected function save($fileName, $item)
    {

        if(config("apollo.sync.redis", false)){
            cache()->tags("apollo")->forever($fileName, $item);
            $this->line("Saving To Redis ".$fileName);
        }


        if(config("apollo.sync.file", false)){

            $this->line("Saving To File ".$fileName);

            $fileName = "apollo/" . $fileName . ".php";
            ksort($item);
            $content = implode("
", [
                "put($fileName, $content);
        }

        $this->line("==================");
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30922.html

相关文章

  • 基于通用jar、动态配置、组件编排的会员任务中心系统设计

    摘要:基于的动态配置推送。对于任务中心这种多任务平台型的配置,有一定影响。基于回调和配置的扩展点流程共建在建中通过扩展点共建方式,将流程编排的能力,暴露给内外部的开发者,完成任务中心的共建。 一、聊聊本文想说什么:   为更好帮助商家的会员快速成长,保持用户活性,完善用户的成长体系,有赞用户中心-会员成长团队基于现有的业务场景,设计了一套较完备任务中心系统。同时也有很多通用技术组件能够落地。...

    null1145 评论0 收藏0
  • Apollo源码分析(一):Apollo简介 & 架构演进

    摘要:零为何要学源码简单,是我现在看起来最简单的源码不会像封装了一层又一层,把人绕晕,而没有那么多封装,上手快,我们学习就应该从简单的开始凭什么非要去学封的像粽子一样的源码,我们就是要去学简简单单,平时朴素,接地气的源码最接近业务代码的源码。 零 为何要学apollo源码 1 简单,Apollo是我现在看起来最简单的源码不会像spring封装了一层又一层,把人绕晕,而apollo没有那么多封...

    FrancisSoung 评论0 收藏0
  • Sentinel Client: 整合Apollo规则持久化

    摘要:这样做的方式是简单,缺点是无法及时获取变更推模式规则中心统一推送,客户端通过注册监听器的方式时刻监听变化,比如使用等配置中心。 在前面的学习过程中,Sentinel 的规则,也就是我们之前定义的限流规则,是通过代码的方式定义好的。这是初始化时需要做的事情,Sentinel 提供了基于API的方式修改规则: FlowRuleManager.loadRules(List rules); /...

    plus2047 评论0 收藏0
  • 2019 简易Web开发指南

    摘要:工具软件欲先攻其事必先利其器,用好工具是做好开发的基础。框架目前最流行简单易用,越来越多人用曾经很流行,现在有点衰退状态管理后端渲染开发工具依赖管理,应用打包,任务管理,编辑器扩展,,移动端有了前端的知识后,我们还可以开发手机。 2019年即将到来,各位同学2018年辛苦了。 不管大家2018年过的怎么样,2019年还是要继续加油的! 在此我整理了个人认为在2019仍是或者将成为主流的...

    vspiders 评论0 收藏0
  • 百度世界发布渡鸦新品,软硬件结合更懂生活

    摘要:百度世界发布划时代产品,软硬件结合更懂智能生活月日,百度世界大会在北京盛大举行。百度已与一汽集团签署战略合作协议,共同推动该项技术产品落地。渡鸦在会上同时公布了另外两款即将面世的产品。 百度世界发布划时代产品,软硬件结合更懂智能生活 11 月 16 日,2017 百度世界大会在北京盛大举行。百度在会上发布了手机百度 10.0 和全新人工智能硬件Raven H等软硬件产品。百度董事长兼首...

    trilever 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<