diff --git a/registry/consul/registry.go b/registry/consul/registry.go
index 1fd3e54e96c446f59dd31ab30575eef5b455b72f..73bf3975bc7c73f4a7748f46280ffb1aa5525ca8 100644
--- a/registry/consul/registry.go
+++ b/registry/consul/registry.go
@@ -111,31 +111,21 @@ func (r *consulRegistry) unregister(url common.URL) error {
 	return r.client.Agent().ServiceDeregister(buildId(url))
 }
 
-func (r *consulRegistry) subscribe(url *common.URL) (registry.Listener, error) {
-	var (
-		listener registry.Listener
-		err      error
-	)
-
+func (r *consulRegistry) Subscribe(url *common.URL, notifyListener registry.NotifyListener) {
 	role, _ := strconv.Atoi(r.URL.GetParam(constant.ROLE_KEY, ""))
 	if role == common.CONSUMER {
-		listener, err = r.getListener(*url)
-		if err != nil {
-			return nil, err
-		}
+		r.subscribe(url, notifyListener)
 	}
-	return listener, nil
 }
 
-//subscibe from registry
-func (r *consulRegistry) Subscribe(url *common.URL, notifyListener registry.NotifyListener) {
+func (r *consulRegistry) subscribe(url *common.URL, notifyListener registry.NotifyListener) {
 	for {
 		if !r.IsAvailable() {
 			logger.Warnf("event listener game over.")
 			return
 		}
 
-		listener, err := r.subscribe(url)
+		listener, err := r.getListener(*url)
 		if err != nil {
 			if !r.IsAvailable() {
 				logger.Warnf("event listener game over.")
@@ -155,9 +145,7 @@ func (r *consulRegistry) Subscribe(url *common.URL, notifyListener registry.Noti
 				logger.Infof("update begin, service event: %v", serviceEvent.String())
 				notifyListener.Notify(serviceEvent)
 			}
-
 		}
-
 	}
 }
 
diff --git a/registry/consul/registry_test.go b/registry/consul/registry_test.go
index ff8c2e23163e85b128436bde001455f316b28dc6..bb6842cd8fb67dd2cc70b1a7530fbb94f618a9b0 100644
--- a/registry/consul/registry_test.go
+++ b/registry/consul/registry_test.go
@@ -51,7 +51,7 @@ func (suite *consulRegistryTestSuite) testUnregister() {
 func (suite *consulRegistryTestSuite) testSubscribe() {
 	consumerUrl := newConsumerUrl(consumerHost, consumerPort, service, protocol)
 	suite.consumerUrl = consumerUrl
-	listener, err := suite.consumerRegistry.subscribe(&consumerUrl)
+	listener, err := suite.consumerRegistry.getListener(consumerUrl)
 	assert.NoError(suite.t, err)
 	suite.listener = listener
 }