소스 검색

feat:同时注册多个

wangchuanjin 2 년 전
부모
커밋
06619a4e45
1개의 변경된 파일15개의 추가작업 그리고 7개의 파일을 삭제
  1. 15 7
      etcd/etcd.go

+ 15 - 7
etcd/etcd.go

@@ -29,8 +29,8 @@ func NewEtcd(endpoints ...string) *etcd {
  * @param key 服务的key
  * @param value
  */
-func (e *etcd) Register(key, value string) error {
-	return e.register(key, value)
+func (e *etcd) Register(kvs ...string) error {
+	return e.register(kvs...)
 }
 
 /*
@@ -43,15 +43,23 @@ func (e *etcd) RegisterIpPort(key, port string) error {
 	return e.register(key, fmt.Sprintf("%s:%s", iputil.InternalIp(), port))
 }
 
-func (e *etcd) register(key, value string) error {
-	stop, err := NewPublisher(e.endpoints, key, value).Register()
-	if err != nil {
-		return err
+func (e *etcd) register(kvs ...string) error {
+	stops := []chan struct{}{}
+	var err error
+	for i := 0; i < len(kvs); i += 2 {
+		stop, e := NewPublisher(e.endpoints, kvs[i], kvs[i+1]).Register()
+		if err != nil {
+			err = e
+			break
+		}
+		stops = append(stops, stop)
 	}
 	quit := make(chan os.Signal, 1)
 	signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
 	<-quit
-	stop <- struct{}{}
+	for _, stop := range stops {
+		stop <- struct{}{}
+	}
 	return nil
 }