Skip to content

Commit 36d7181

Browse files
committed
增加zookeeper注册中心,统一各注册中心写法
1 parent 7a3ae34 commit 36d7181

File tree

8 files changed

+83
-114
lines changed

8 files changed

+83
-114
lines changed

grpc-common-spring-boot/src/main/java/net/devh/boot/grpc/common/util/GrpcUtils.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ public final class GrpcUtils {
3131
*/
3232
public static final String CLOUD_DISCOVERY_METADATA_PORT = "gRPC.port";
3333

34+
35+
public static final String INTER_PROCESS_DISABLE = "-1";
36+
3437
/**
3538
* Extracts the service name from the given method.
3639
*

grpc-server-spring-boot-autoconfigure/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ dependencies {
1919
optionalSupportImplementation 'org.springframework.security:spring-security-core'
2020
optionalSupportImplementation 'org.springframework.cloud:spring-cloud-starter-sleuth'
2121
optionalSupportImplementation 'org.springframework.cloud:spring-cloud-starter-consul-discovery'
22+
optionalSupportImplementation 'org.springframework.cloud:spring-cloud-starter-zookeeper-discovery'
2223
optionalSupportImplementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
2324
optionalSupportImplementation "com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:${springCloudAlibabaNacosVersion}"
2425
optionalSupportImplementation 'com.google.inject:guice:4.2.3' // Only needed to avoid some warnings during compilation (for eureka)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package net.devh.boot.grpc.server.autoconfigure;
2+
3+
import net.devh.boot.grpc.common.util.GrpcUtils;
4+
import net.devh.boot.grpc.server.config.GrpcServerProperties;
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
7+
import org.springframework.boot.context.properties.EnableConfigurationProperties;
8+
import org.springframework.cloud.zookeeper.serviceregistry.ZookeeperRegistration;
9+
import org.springframework.context.annotation.Configuration;
10+
11+
import javax.annotation.PostConstruct;
12+
13+
/**
14+
* @author z00567810
15+
* @date 2021/1/6
16+
*/
17+
@Configuration
18+
@EnableConfigurationProperties
19+
@ConditionalOnClass({ZookeeperRegistration.class})
20+
public class GrpcMetaDataZookeeperConfiguration {
21+
22+
@Autowired(required = false)
23+
ZookeeperRegistration zookeeperRegistration;
24+
25+
@Autowired
26+
private GrpcServerProperties grpcServerProperties;
27+
28+
29+
@PostConstruct
30+
public void init() {
31+
final String port = String.valueOf(grpcServerProperties.getPort());
32+
zookeeperRegistration.setPort(0);
33+
if (!GrpcUtils.INTER_PROCESS_DISABLE.equals(port)) {
34+
zookeeperRegistration.getServiceInstance().getPayload().getMetadata().put(GrpcUtils.CLOUD_DISCOVERY_METADATA_PORT, port);
35+
}
36+
}
37+
}

grpc-server-spring-boot-autoconfigure/src/main/java/net/devh/boot/grpc/server/autoconfigure/GrpcMetadataConsulConfiguration.java

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,18 @@
1717

1818
package net.devh.boot.grpc.server.autoconfigure;
1919

20+
import net.devh.boot.grpc.common.util.GrpcUtils;
21+
import net.devh.boot.grpc.server.config.GrpcServerProperties;
22+
import org.springframework.beans.factory.annotation.Autowired;
2023
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
21-
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
2224
import org.springframework.boot.context.properties.EnableConfigurationProperties;
23-
import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties;
24-
import org.springframework.cloud.consul.serviceregistry.ConsulRegistrationCustomizer;
25-
import org.springframework.context.annotation.Bean;
25+
import org.springframework.cloud.consul.serviceregistry.ConsulRegistration;
2626
import org.springframework.context.annotation.Configuration;
2727

28-
import com.ecwid.consul.v1.ConsulClient;
29-
30-
import net.devh.boot.grpc.server.cloud.ConsulGrpcRegistrationCustomizer;
31-
import net.devh.boot.grpc.server.config.GrpcServerProperties;
28+
import javax.annotation.PostConstruct;
29+
import java.util.ArrayList;
30+
import java.util.List;
31+
import java.util.Objects;
3232

3333
/**
3434
* Configuration class that configures the required beans for gRPC discovery via Consul.
@@ -38,20 +38,23 @@
3838
*/
3939
@Configuration(proxyBeanMethods = false)
4040
@EnableConfigurationProperties
41-
@ConditionalOnClass({ConsulDiscoveryProperties.class, ConsulClient.class, GrpcServerProperties.class})
41+
@ConditionalOnClass({ConsulRegistration.class})
4242
public class GrpcMetadataConsulConfiguration {
4343

44-
/**
45-
* Creates a bean that registers the gRPC endpoint via consul.
46-
*
47-
* @param grpcServerProperties The server properties used to fill in the blanks.
48-
* @return The newly created consulGrpcRegistrationCustomizer bean.
49-
*/
50-
@ConditionalOnMissingBean
51-
@Bean
52-
public ConsulRegistrationCustomizer consulGrpcRegistrationCustomizer(
53-
final GrpcServerProperties grpcServerProperties) {
54-
return new ConsulGrpcRegistrationCustomizer(grpcServerProperties);
55-
}
44+
@Autowired(required = false)
45+
private ConsulRegistration consulRegistration;
46+
47+
@Autowired
48+
private GrpcServerProperties grpcProperties;
5649

50+
@PostConstruct
51+
public void init() {
52+
final String port = String.valueOf(grpcProperties.getPort());
53+
List<String> tags = consulRegistration.getService().getTags();
54+
tags = Objects.isNull(tags) ? new ArrayList<>() : tags;
55+
if (!GrpcUtils.INTER_PROCESS_DISABLE.equals(port)) {
56+
tags.add(GrpcUtils.CLOUD_DISCOVERY_METADATA_PORT + "=" + port);
57+
consulRegistration.getService().setTags(tags);
58+
}
59+
}
5760
}

grpc-server-spring-boot-autoconfigure/src/main/java/net/devh/boot/grpc/server/autoconfigure/GrpcMetadataEurekaConfiguration.java

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,15 @@
1717

1818
package net.devh.boot.grpc.server.autoconfigure;
1919

20-
import javax.annotation.PostConstruct;
21-
20+
import net.devh.boot.grpc.common.util.GrpcUtils;
21+
import net.devh.boot.grpc.server.config.GrpcServerProperties;
2222
import org.springframework.beans.factory.annotation.Autowired;
2323
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
2424
import org.springframework.boot.context.properties.EnableConfigurationProperties;
25-
import org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean;
25+
import org.springframework.cloud.netflix.eureka.serviceregistry.EurekaRegistration;
2626
import org.springframework.context.annotation.Configuration;
2727

28-
import com.netflix.appinfo.EurekaInstanceConfig;
29-
import com.netflix.discovery.EurekaClient;
30-
31-
import net.devh.boot.grpc.common.util.GrpcUtils;
32-
import net.devh.boot.grpc.server.config.GrpcServerProperties;
28+
import javax.annotation.PostConstruct;
3329

3430
/**
3531
* Configuration class that configures the required beans for grpc discovery via Eureka.
@@ -39,23 +35,20 @@
3935
*/
4036
@Configuration(proxyBeanMethods = false)
4137
@EnableConfigurationProperties
42-
@ConditionalOnClass({EurekaInstanceConfigBean.class, EurekaClient.class})
38+
@ConditionalOnClass({EurekaRegistration.class})
4339
public class GrpcMetadataEurekaConfiguration {
4440

4541
@Autowired(required = false)
46-
private EurekaInstanceConfig instance;
42+
private EurekaRegistration eurekaRegistration;
4743

4844
@Autowired
4945
private GrpcServerProperties grpcProperties;
5046

5147
@PostConstruct
5248
public void init() {
53-
if (this.instance == null) {
54-
return;
55-
}
56-
final int port = this.grpcProperties.getPort();
57-
if (port != -1) {
58-
this.instance.getMetadataMap().put(GrpcUtils.CLOUD_DISCOVERY_METADATA_PORT, Integer.toString(port));
49+
final String port = String.valueOf(grpcProperties.getPort());
50+
if (!GrpcUtils.INTER_PROCESS_DISABLE.equals(port)) {
51+
eurekaRegistration.getInstanceConfig().getMetadataMap().put(GrpcUtils.CLOUD_DISCOVERY_METADATA_PORT, port);
5952
}
6053
}
6154

grpc-server-spring-boot-autoconfigure/src/main/java/net/devh/boot/grpc/server/autoconfigure/GrpcMetadataNacosConfiguration.java

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,15 @@
1717

1818
package net.devh.boot.grpc.server.autoconfigure;
1919

20-
import javax.annotation.PostConstruct;
21-
20+
import com.alibaba.cloud.nacos.registry.NacosRegistration;
21+
import net.devh.boot.grpc.common.util.GrpcUtils;
22+
import net.devh.boot.grpc.server.config.GrpcServerProperties;
2223
import org.springframework.beans.factory.annotation.Autowired;
2324
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
2425
import org.springframework.boot.context.properties.EnableConfigurationProperties;
2526
import org.springframework.context.annotation.Configuration;
2627

27-
import com.alibaba.cloud.nacos.NacosDiscoveryProperties;
28-
import com.alibaba.cloud.nacos.registry.NacosRegistration;
29-
import com.alibaba.nacos.client.naming.NacosNamingService;
30-
31-
import net.devh.boot.grpc.common.util.GrpcUtils;
32-
import net.devh.boot.grpc.server.config.GrpcServerProperties;
28+
import javax.annotation.PostConstruct;
3329

3430
/**
3531
* Configuration class that configures the required beans for grpc discovery via Nacos.
@@ -38,7 +34,7 @@
3834
*/
3935
@Configuration(proxyBeanMethods = false)
4036
@EnableConfigurationProperties
41-
@ConditionalOnClass({NacosDiscoveryProperties.class, NacosNamingService.class})
37+
@ConditionalOnClass({NacosRegistration.class})
4238
public class GrpcMetadataNacosConfiguration {
4339

4440
@Autowired(required = false)
@@ -49,12 +45,9 @@ public class GrpcMetadataNacosConfiguration {
4945

5046
@PostConstruct
5147
public void init() {
52-
if (this.nacosRegistration == null) {
53-
return;
54-
}
55-
final int port = this.grpcProperties.getPort();
56-
if (port != -1) {
57-
this.nacosRegistration.getMetadata().put(GrpcUtils.CLOUD_DISCOVERY_METADATA_PORT, Integer.toString(port));
48+
final String port = String.valueOf(grpcProperties.getPort());
49+
if (!GrpcUtils.INTER_PROCESS_DISABLE.equals(port)) {
50+
nacosRegistration.getMetadata().put(GrpcUtils.CLOUD_DISCOVERY_METADATA_PORT, port);
5851
}
5952
}
6053

grpc-server-spring-boot-autoconfigure/src/main/java/net/devh/boot/grpc/server/cloud/ConsulGrpcRegistrationCustomizer.java

Lines changed: 0 additions & 62 deletions
This file was deleted.

grpc-server-spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
33
net.devh.boot.grpc.server.autoconfigure.GrpcMetadataConsulConfiguration,\
44
net.devh.boot.grpc.server.autoconfigure.GrpcMetadataEurekaConfiguration,\
55
net.devh.boot.grpc.server.autoconfigure.GrpcMetadataNacosConfiguration,\
6+
net.devh.boot.grpc.server.autoconfigure.GrpcMetadataZookeeperConfiguration,\
67
net.devh.boot.grpc.server.autoconfigure.GrpcServerAutoConfiguration,\
78
net.devh.boot.grpc.server.autoconfigure.GrpcServerFactoryAutoConfiguration,\
89
net.devh.boot.grpc.server.autoconfigure.GrpcServerSecurityAutoConfiguration,\

0 commit comments

Comments
 (0)