This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git

commit 5eac82b2a547a12d0c390826b5cb869b2451d1f5
Author: CMonkey <[email protected]>
AuthorDate: Fri Jul 5 15:43:46 2019 +0800

    add alpha/alpha-spring-cloud-starter-nacos
---
 alpha/alpha-spring-cloud-starter-nacos/pom.xml     | 84 ++++++++++++++++++++++
 .../nacos/GrpcStartableStartedEventListener.java   | 74 +++++++++++++++++++
 2 files changed, 158 insertions(+)

diff --git a/alpha/alpha-spring-cloud-starter-nacos/pom.xml 
b/alpha/alpha-spring-cloud-starter-nacos/pom.xml
new file mode 100644
index 0000000..a85d164
--- /dev/null
+++ b/alpha/alpha-spring-cloud-starter-nacos/pom.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+  <parent>
+    <artifactId>alpha</artifactId>
+    <groupId>org.apache.servicecomb.pack</groupId>
+    <version>0.5.0-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+
+  <artifactId>alpha-spring-cloud-starter-nacos</artifactId>
+  <name>Pack::Alpha::Spring Cloud Starter Nacos</name>
+
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-test</artifactId>
+        <version>${spring.boot.version}</version>
+        <exclusions>
+          <exclusion>
+            <groupId>org.json</groupId>
+            <artifactId>json</artifactId>
+          </exclusion>
+        </exclusions>
+        <scope>test</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-dependencies</artifactId>
+        <version>${spring.boot.version}</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.springframework.cloud</groupId>
+        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+        
<version>${spring.cloud.starter.alibaba.nacos.discovery.version}</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.servicecomb.pack</groupId>
+      <artifactId>alpha-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework.boot</groupId>
+      <artifactId>spring-boot-starter-test</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework.boot</groupId>
+      <artifactId>spring-boot-starter-log4j2</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework.cloud</groupId>
+      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.google.guava</groupId>
+      <artifactId>guava</artifactId>
+    </dependency>
+  </dependencies>
+
+</project>
diff --git 
a/alpha/alpha-spring-cloud-starter-nacos/src/main/java/org/apache/servicecomb/pack/alpha/server/discovery/nacos/GrpcStartableStartedEventListener.java
 
b/alpha/alpha-spring-cloud-starter-nacos/src/main/java/org/apache/servicecomb/pack/alpha/server/discovery/nacos/GrpcStartableStartedEventListener.java
new file mode 100644
index 0000000..7f9b072
--- /dev/null
+++ 
b/alpha/alpha-spring-cloud-starter-nacos/src/main/java/org/apache/servicecomb/pack/alpha/server/discovery/nacos/GrpcStartableStartedEventListener.java
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.pack.alpha.server.discovery.nacos;
+
+import com.google.common.eventbus.EventBus;
+import com.google.common.eventbus.Subscribe;
+import org.apache.servicecomb.pack.alpha.core.event.GrpcStartableStartedEvent;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.cloud.alibaba.nacos.NacosDiscoveryAutoConfiguration;
+import org.springframework.cloud.alibaba.nacos.NacosDiscoveryProperties;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.lang.invoke.MethodHandles;
+
+/**
+ * Listen for GrpcStartableStartedEvent and initialize the Nacos instance 
metadata
+ * */
+
+@Component
+@ConditionalOnClass({NacosDiscoveryAutoConfiguration.class})
+@ConditionalOnProperty(value = {"nacos.client.enabled"}, matchIfMissing = 
false)
+public class GrpcStartableStartedEventListener {
+
+  private static final Logger LOG = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+  public static final String ALPHA_SERVER_GRPC_ADDRESS_KEY = 
"servicecomb-alpha-server";
+
+  @Autowired
+  @Qualifier("alphaEventBus")
+  EventBus eventBus;
+
+  @Autowired(required = false)
+  public NacosDiscoveryProperties nacosDiscoveryProperties;
+
+  @PostConstruct
+  public void init(){
+      LOG.info("GrpcStartableStartedEventListener init");
+    eventBus.register(this);
+  }
+
+  /**
+   * Update grpc port to Nacos instance metadata
+   * */
+  @Subscribe
+  public void listenGrpcStartableStartedEvent(GrpcStartableStartedEvent 
grpcStartableStartedEvent) {
+    LOG.info("event port = {}", grpcStartableStartedEvent.getPort());
+    if(null != nacosDiscoveryProperties){
+        String grpcAddressValue = nacosDiscoveryProperties.getIp() +":" + 
grpcStartableStartedEvent.getPort();
+        
this.nacosDiscoveryProperties.getMetadata().put(ALPHA_SERVER_GRPC_ADDRESS_KEY,grpcAddressValue);
+        LOG.info("Register grpc address {} to Nacos instance 
metadata",grpcAddressValue);
+    }
+  }
+}

Reply via email to