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

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


The following commit(s) were added to refs/heads/master by this push:
     new f485de043 [SCB-2721]registration events include Microservice 
information (#3470)
f485de043 is described below

commit f485de04359cfcda95a694db3f96cfceef7232c0
Author: liubao68 <[email protected]>
AuthorDate: Thu Nov 10 11:02:39 2022 +0800

    [SCB-2721]registration events include Microservice information (#3470)
---
 .../service/center/client/RegistrationEvents.java  | 38 +++++++++++++-----
 .../center/client/ServiceCenterRegistration.java   | 45 ++++++++++++----------
 2 files changed, 52 insertions(+), 31 deletions(-)

diff --git 
a/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/RegistrationEvents.java
 
b/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/RegistrationEvents.java
index 0da3ad6da..d411913df 100644
--- 
a/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/RegistrationEvents.java
+++ 
b/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/RegistrationEvents.java
@@ -17,38 +17,56 @@
 
 package org.apache.servicecomb.service.center.client;
 
+import org.apache.servicecomb.service.center.client.model.Microservice;
+import org.apache.servicecomb.service.center.client.model.MicroserviceInstance;
+
 public abstract class RegistrationEvents {
-  protected boolean success;
+  protected final boolean success;
+
+  protected final Microservice microservice;
 
-  protected RegistrationEvents(boolean success) {
+  protected RegistrationEvents(boolean success, Microservice microservice) {
     this.success = success;
+    this.microservice = microservice;
   }
 
   public boolean isSuccess() {
     return this.success;
   }
 
+  public Microservice getMicroservice() {
+    return microservice;
+  }
+
   public static class MicroserviceRegistrationEvent extends RegistrationEvents 
{
-    public MicroserviceRegistrationEvent(boolean success) {
-      super(success);
+    public MicroserviceRegistrationEvent(boolean success, Microservice 
microservice) {
+      super(success, microservice);
     }
   }
 
   public static class SchemaRegistrationEvent extends RegistrationEvents {
-    public SchemaRegistrationEvent(boolean success) {
-      super(success);
+    public SchemaRegistrationEvent(boolean success, Microservice microservice) 
{
+      super(success, microservice);
     }
   }
 
   public static class MicroserviceInstanceRegistrationEvent extends 
RegistrationEvents {
-    public MicroserviceInstanceRegistrationEvent(boolean success) {
-      super(success);
+    protected final MicroserviceInstance microserviceInstance;
+
+    public MicroserviceInstanceRegistrationEvent(boolean success, Microservice 
microservice,
+        MicroserviceInstance microserviceInstance) {
+      super(success, microservice);
+      this.microserviceInstance = microserviceInstance;
     }
   }
 
   public static class HeartBeatEvent extends RegistrationEvents {
-    public HeartBeatEvent(boolean success) {
-      super(success);
+    protected final MicroserviceInstance microserviceInstance;
+
+    public HeartBeatEvent(boolean success, Microservice microservice,
+        MicroserviceInstance microserviceInstance) {
+      super(success, microservice);
+      this.microserviceInstance = microserviceInstance;
     }
   }
 }
diff --git 
a/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterRegistration.java
 
b/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterRegistration.java
index 53fba460e..c9340e4d3 100644
--- 
a/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterRegistration.java
+++ 
b/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterRegistration.java
@@ -121,14 +121,14 @@ public class ServiceCenterRegistration extends 
AbstractTask {
           RegisteredMicroserviceResponse response = 
serviceCenterClient.registerMicroservice(microservice);
           if (StringUtils.isEmpty(response.getServiceId())) {
             LOGGER.error("register microservice failed, and will try again.");
-            eventBus.post(new MicroserviceRegistrationEvent(false));
+            eventBus.post(new MicroserviceRegistrationEvent(false, 
microservice));
             startTask(new BackOffSleepTask(failedCount + 1, new 
RegisterMicroserviceTask(failedCount + 1)));
             return;
           }
           microservice.setServiceId(response.getServiceId());
           microserviceInstance.setServiceId(response.getServiceId());
           microserviceInstance.setMicroservice(microservice);
-          eventBus.post(new MicroserviceRegistrationEvent(true));
+          eventBus.post(new MicroserviceRegistrationEvent(true, microservice));
           startTask(new RegisterSchemaTask(0));
         } else {
           Microservice newMicroservice = 
serviceCenterClient.getMicroserviceByServiceId(serviceResponse.getServiceId());
@@ -136,12 +136,14 @@ public class ServiceCenterRegistration extends 
AbstractTask {
           Map<String, String> propertiesTemp = microservice.getProperties();
           microservice.setProperties(newMicroservice.getProperties());
           microservice.getProperties().putAll(propertiesTemp);
-          if 
(serviceCenterClient.updateMicroserviceProperties(serviceResponse.getServiceId(),
 microservice.getProperties())) {
-            LOGGER.info("microservice is already registered. Update 
microservice properties successfully. properties=[{}]",
-                    microservice.getProperties());
+          if 
(serviceCenterClient.updateMicroserviceProperties(serviceResponse.getServiceId(),
+              microservice.getProperties())) {
+            LOGGER.info(
+                "microservice is already registered. Update microservice 
properties successfully. properties=[{}]",
+                microservice.getProperties());
           } else {
             LOGGER.error("microservice is already registered. Update 
microservice properties failed. properties=[{}]",
-                    microservice.getProperties());
+                microservice.getProperties());
           }
 
           microservice.setServiceId(serviceResponse.getServiceId());
@@ -150,25 +152,26 @@ public class ServiceCenterRegistration extends 
AbstractTask {
           if (isSwaggerDifferent(newMicroservice)) {
             if (serviceCenterConfiguration.isCanOverwriteSwagger()) {
               LOGGER.warn("Service has already registered, but schema ids not 
equal, try to register it again");
-              eventBus.post(new MicroserviceRegistrationEvent(true));
+              eventBus.post(new MicroserviceRegistrationEvent(true, 
microservice));
               startTask(new RegisterSchemaTask(0));
               return;
             }
             if (serviceCenterConfiguration.isIgnoreSwaggerDifferent()) {
               LOGGER.warn("Service has already registered, but schema ids not 
equal. Ignore and continue to register");
             } else {
-              throw new IllegalStateException("Service has already registered, 
but schema ids not equal, stop register. "
+              throw new IllegalStateException(
+                  "Service has already registered, but schema ids not equal, 
stop register. "
                       + "Change the microservice version or delete the old 
microservice info and try again.");
             }
           }
-          eventBus.post(new MicroserviceRegistrationEvent(true));
+          eventBus.post(new MicroserviceRegistrationEvent(true, microservice));
           startTask(new RegisterMicroserviceInstanceTask(0));
         }
       } catch (IllegalStateException e) {
         throw e;
       } catch (Exception e) {
         LOGGER.error("register microservice failed, and will try again.", e);
-        eventBus.post(new MicroserviceRegistrationEvent(false));
+        eventBus.post(new MicroserviceRegistrationEvent(false, microservice));
         startTask(new BackOffSleepTask(failedCount + 1, new 
RegisterMicroserviceTask(failedCount + 1)));
       }
     }
@@ -194,7 +197,7 @@ public class ServiceCenterRegistration extends AbstractTask 
{
       try {
         if (schemaInfos == null || schemaInfos.isEmpty()) {
           LOGGER.warn("no schemas defined for this microservice.");
-          eventBus.post(new SchemaRegistrationEvent(true));
+          eventBus.post(new SchemaRegistrationEvent(true, microservice));
           startTask(new RegisterMicroserviceInstanceTask(0));
           return;
         }
@@ -205,18 +208,18 @@ public class ServiceCenterRegistration extends 
AbstractTask {
           request.setSummary(schemaInfo.getSummary());
           if (!serviceCenterClient.registerSchema(microservice.getServiceId(), 
schemaInfo.getSchemaId(), request)) {
             LOGGER.error("register schema content failed, and will try 
again.");
-            eventBus.post(new SchemaRegistrationEvent(false));
+            eventBus.post(new SchemaRegistrationEvent(false, microservice));
             // back off by multiply
             startTask(new BackOffSleepTask(failedCount + 1, new 
RegisterSchemaTask((failedCount + 1) * 2)));
             return;
           }
         }
 
-        eventBus.post(new SchemaRegistrationEvent(true));
+        eventBus.post(new SchemaRegistrationEvent(true, microservice));
         startTask(new RegisterMicroserviceInstanceTask(0));
       } catch (Exception e) {
         LOGGER.error("register schema content failed, and will try again.", e);
-        eventBus.post(new SchemaRegistrationEvent(false));
+        eventBus.post(new SchemaRegistrationEvent(false, microservice));
         // back off by multiply
         startTask(new BackOffSleepTask(failedCount + 1, new 
RegisterSchemaTask((failedCount + 1) * 2)));
       }
@@ -237,18 +240,18 @@ public class ServiceCenterRegistration extends 
AbstractTask {
             .registerMicroserviceInstance(microserviceInstance);
         if (instance == null) {
           LOGGER.error("register microservice instance failed, and will try 
again.");
-          eventBus.post(new MicroserviceInstanceRegistrationEvent(false));
+          eventBus.post(new MicroserviceInstanceRegistrationEvent(false, 
microservice, microserviceInstance));
           startTask(new BackOffSleepTask(failedCount + 1, new 
RegisterMicroserviceInstanceTask(failedCount + 1)));
         } else {
           microserviceInstance.setInstanceId(instance.getInstanceId());
           LOGGER.info("register microservice successfully, service id={}, 
instance id={}", microservice.getServiceId(),
               microserviceInstance.getInstanceId());
-          eventBus.post(new MicroserviceInstanceRegistrationEvent(true));
+          eventBus.post(new MicroserviceInstanceRegistrationEvent(true, 
microservice, microserviceInstance));
           startTask(new SendHeartBeatTask(0));
         }
       } catch (Exception e) {
         LOGGER.error("register microservice instance failed, and will try 
again.", e);
-        eventBus.post(new MicroserviceInstanceRegistrationEvent(false));
+        eventBus.post(new MicroserviceInstanceRegistrationEvent(false, 
microservice, microserviceInstance));
         startTask(new BackOffSleepTask(failedCount + 1, new 
RegisterMicroserviceInstanceTask(failedCount + 1)));
       }
     }
@@ -267,24 +270,24 @@ public class ServiceCenterRegistration extends 
AbstractTask {
     public void execute() {
       try {
         if (failedCount >= FAILED_RETRY) {
-          eventBus.post(new HeartBeatEvent(false));
+          eventBus.post(new HeartBeatEvent(false, microservice, 
microserviceInstance));
           startTask(new RegisterMicroserviceTask(0));
           return;
         }
 
         if (!serviceCenterClient.sendHeartBeat(microservice.getServiceId(), 
microserviceInstance.getInstanceId())) {
           LOGGER.error("send heart failed, and will try again.");
-          eventBus.post(new HeartBeatEvent(false));
+          eventBus.post(new HeartBeatEvent(false, microservice, 
microserviceInstance));
           startTask(new BackOffSleepTask(failedCount + 1, new 
SendHeartBeatTask(failedCount + 1)));
         } else {
           // wait 10 * 3000 ms and send heart beat again.
-          eventBus.post(new HeartBeatEvent(true));
+          eventBus.post(new HeartBeatEvent(true, microservice, 
microserviceInstance));
           startTask(
               new BackOffSleepTask(Math.max(heartBeatInterval, 
heartBeatRequestTimeout), new SendHeartBeatTask(0)));
         }
       } catch (Exception e) {
         LOGGER.error("send heart failed, and will try again.", e);
-        eventBus.post(new HeartBeatEvent(false));
+        eventBus.post(new HeartBeatEvent(false, microservice, 
microserviceInstance));
         startTask(new BackOffSleepTask(failedCount + 1, new 
SendHeartBeatTask(failedCount + 1)));
       }
     }

Reply via email to