diff --git a/config_center/apollo/impl.go b/config_center/apollo/impl.go index e98785cbe35dc194b2e6430f0568a69339a5fae3..dde30a7e38e24256c56dae0706d97c48fb36a6b9 100644 --- a/config_center/apollo/impl.go +++ b/config_center/apollo/impl.go @@ -33,10 +33,10 @@ import ( ) const ( - apolloEnvKey = "env"; - apolloAddrKey = "apollo.meta"; - apolloClusterKey = "apollo.cluster"; - apolloProtocolPrefix = "http://"; + apolloEnvKey = "env" + apolloAddrKey = "apollo.meta" + apolloClusterKey = "apollo.cluster" + apolloProtocolPrefix = "http://" ) type apolloDynamicConfiguration struct { @@ -51,7 +51,7 @@ func newApolloDynamicConfiguration(url *common.URL) (*apolloDynamicConfiguration c := &apolloDynamicConfiguration{ url: url, } - configEnv := url.GetParam(apolloEnvKey, ""); + configEnv := url.GetParam(apolloEnvKey, "") configAddr := c.getAddressWithProtocolPrefix(url) configCluster := url.GetParam(constant.CONFIG_GROUP_KEY, "") if len(configEnv) != 0 { @@ -81,24 +81,30 @@ func newApolloDynamicConfiguration(url *common.URL) (*apolloDynamicConfiguration return c, nil } -func (c *apolloDynamicConfiguration) start() { - for event := range agollo.ListenChangeEvent() { - for name, change := range event.Changes { - cfgChangeEvent := &config_center.ConfigChangeEvent{ - Key: name, - Value: change.NewValue, - ConfigType: c.getChangeType(change.ChangeType), - } - c.listeners.Range(func(key, value interface{}) bool { - for listener, _ := range value.(apolloListener).listeners { - listener.Process(cfgChangeEvent) - } - return true - }) +type apolloChangeListener struct { + c *apolloDynamicConfiguration +} + +func (a *apolloChangeListener) OnChange(event *agollo.ChangeEvent) { + for name, change := range event.Changes { + cfgChangeEvent := &config_center.ConfigChangeEvent{ + Key: name, + Value: change.NewValue, + ConfigType: a.c.getChangeType(change.ChangeType), } + a.c.listeners.Range(func(key, value interface{}) bool { + for listener, _ := range value.(apolloListener).listeners { + listener.Process(cfgChangeEvent) + } + return true + }) } } +func (c *apolloDynamicConfiguration) start() { + agollo.AddChangeListener(&apolloChangeListener{}) +} + func (c *apolloDynamicConfiguration) getChangeType(change agollo.ConfigChangeType) remoting.EventType { switch change { case agollo.ADDED: diff --git a/go.mod b/go.mod index 124e7cfe8b4f921325c852f62c7909fa882f6dda..a7b0685d9fac821b54b348d19e66333e073a3320 100644 --- a/go.mod +++ b/go.mod @@ -6,8 +6,6 @@ require ( github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190802083043-4cd0c391755e // indirect github.com/apache/dubbo-go-hessian2 v1.2.5-0.20191029001541-894e45c9aaaa github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23 // indirect - github.com/cespare/xxhash v1.1.0 // indirect - github.com/coocood/freecache v1.1.0 // indirect github.com/coreos/bbolt v1.3.3 // indirect github.com/coreos/etcd v3.3.13+incompatible github.com/coreos/go-semver v0.3.0 // indirect @@ -46,7 +44,7 @@ require ( github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 // indirect github.com/toolkits/concurrent v0.0.0-20150624120057-a4371d70e3e3 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect - github.com/zouyx/agollo v1.8.0 + github.com/zouyx/agollo v0.0.0-20191028150957-a5bd2d53f93d go.etcd.io/bbolt v1.3.3 // indirect go.etcd.io/etcd v3.3.13+incompatible go.uber.org/atomic v1.4.0 diff --git a/go.sum b/go.sum index 5df57e4fbaf670f80b6caa44010c1025df20f90b..dd616f464a592844ed82c5323ceffefc797cae4c 100644 --- a/go.sum +++ b/go.sum @@ -461,6 +461,7 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P github.com/tebeka/strftime v0.1.3 h1:5HQXOqWKYRFfNyBMNVc9z5+QzuBtIXy03psIhtdJYto= github.com/tebeka/strftime v0.1.3/go.mod h1:7wJm3dZlpr4l/oVK0t1HYIc4rMzQ2XJlOMIUJUJH6XQ= github.com/tent/http-link-go v0.0.0-20130702225549-ac974c61c2f9/go.mod h1:RHkNRtSLfOK7qBTHaeSX1D6BNpI3qw7NTxsmNr4RvN8= +github.com/tevid/gohamcrest v1.1.1/go.mod h1:3UvtWlqm8j5JbwYZh80D/PVBt0mJ1eJiYgZMibh0H/k= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 h1:LnC5Kc/wtumK+WB441p7ynQJzVuNRJiqddSIE3IlSEQ= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/toolkits/concurrent v0.0.0-20150624120057-a4371d70e3e3 h1:kF/7m/ZU+0D4Jj5eZ41Zm3IH/J8OElK1Qtd7tVKAwLk= @@ -471,8 +472,7 @@ github.com/vmware/govmomi v0.18.0 h1:f7QxSmP7meCtoAmiKZogvVbLInT+CZx6Px6K5rYsJZo github.com/vmware/govmomi v0.18.0/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/zouyx/agollo v1.8.0 h1:u2Z+zsSOUND9mZlKYSWGvxkRKZyRcBe+wK+mfBxYWv8= -github.com/zouyx/agollo v1.8.0/go.mod h1:4JiqkUebtrabKqJ9OBbgRlRvtvOKIeMUhNqd5qVvqqM= +github.com/zouyx/agollo v0.0.0-20191028150957-a5bd2d53f93d/go.mod h1:S1cAa98KMFv4Sa8SbJ6ZtvOmf0VlgH0QJ1gXI0lBfBY= go.etcd.io/bbolt v1.3.3 h1:MUGmc65QhB3pIlaQ5bB4LwqSj6GIonVJXpZiaKNyaKk= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/etcd v3.3.13+incompatible h1:jCejD5EMnlGxFvcGRyEV4VGlENZc7oPQX6o0t7n3xbw=