hyperf 配置中心使用ectd获取不到值

启用了config-center配置中心。配置如下

return [
    'enable' => (bool) env('ENABLE_CONFIG_CENTER', false),
    'driver' => env('CONFIG_CENTER_DRIVER', 'etcd'),
    'mode' => env('CONFIG_CENTER_MODE', Mode::PROCESS),
    'drivers' => [
        'etcd' => [
            'driver' => Hyperf\ConfigEtcd\EtcdDriver::class,
            'packer' => Hyperf\Utils\Packer\JsonPacker::class,
            // 需要同步的数据前缀
            'namespaces' => [
                '/hb',
            ],
            // `Etcd` 与 `Config` 的映射关系。映射中不存在的 `key`,则不会被同步到 `Config` 中
            'mapping' => [
                '/hb/app/ttl' => 'hb.app.ttl',
                '/hb/app/mode' => 'hb.app.mode'
            ],
            // 配置更新间隔(秒)
            'interval' => 5,
            'client' => [
                'uri' => 'http://127.0.0.1:2379',
                'version' => 'v3beta',
                'options' => [
                    'timeout' => 10,
                ],
            ],
        ],
    ],
];

通过etcdctl增加配置


[root@bogon ~]# etcdctl put /hb/app/ttl 1800
OK
[root@bogon ~]# etcdctl put /hb/app/mode 'fast'
OK
[root@bogon ~]# etcdctl put /hb/app/mode "fast"
OK
[root@bogon ~]# etcdctl put /hb/app/mode 1
OK
[root@bogon ~]# etcdctl put /hb/app/mode 'fast'
OK
[root@bogon ~]# etcdctl put /hb/app/mode "fast"
OK

获取


    $ttl = config('hb.app.ttl');
    $mode = config('hb.app.mode');

    return ['mode' => $mode, 'ttl' => $ttl, 'config' => $this->config];

结果,数值类型的获取得到,string的为null????

{
    "mode": null,
    "ttl": 1800,
    "config": {}
}

请问这是为什么???etcdctl get是可以正常取得到值的

阅读 2.8k
1 个回答

看源码后发现,其实string应该以json形式的数据保存再etcd中

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题