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)));
}
}