下面列出了怎么用io.grpc.NameResolverRegistry的API类实例代码及写法,或者点击链接到github查看源代码。
private SimpleServiceGrpc.SimpleServiceBlockingStub getBlockingStub(
final UpstreamTlsContext upstreamTlsContext, String overrideAuthority)
throws URISyntaxException {
URI expectedUri = new URI("sdstest://localhost:" + port);
fakeNameResolverFactory = new FakeNameResolverFactory.Builder(expectedUri).build();
NameResolverRegistry.getDefaultRegistry().register(fakeNameResolverFactory);
XdsChannelBuilder channelBuilder =
XdsChannelBuilder.forTarget("sdstest://localhost:" + port);
if (overrideAuthority != null) {
channelBuilder = channelBuilder.overrideAuthority(overrideAuthority);
}
InetSocketAddress socketAddress =
new InetSocketAddress(Inet4Address.getLoopbackAddress(), port);
Attributes attrs =
(upstreamTlsContext != null)
? Attributes.newBuilder()
.set(XdsAttributes.ATTR_UPSTREAM_TLS_CONTEXT, upstreamTlsContext)
.build()
: Attributes.EMPTY;
fakeNameResolverFactory.setServers(
ImmutableList.of(new EquivalentAddressGroup(socketAddress, attrs)));
return SimpleServiceGrpc.newBlockingStub(cleanupRule.register(channelBuilder.build()));
}
/**
* Register all NameResolverProviders in the given registry and store a reference to it for later de-registration.
*
* @param registry The registry to add the providers to.
*/
public void register(NameResolverRegistry registry) {
this.registries.add(registry);
for (NameResolverProvider provider : this.providers) {
try {
registry.register(provider);
log.info("{} is available -> Added to the NameResolverRegistry", provider);
} catch (IllegalArgumentException e) {
log.info("{} is not available -> Not added to the NameResolverRegistry", provider);
}
}
}
@Override
public void destroy() {
for (NameResolverRegistry registry : this.registries) {
for (NameResolverProvider provider : this.providers) {
registry.deregister(provider);
log.info("{} was removed from the NameResolverRegistry", provider);
}
}
this.registries.clear();
}
/**
* Creates a new NameResolverRegistration. This ensures that the NameResolverProvider's get unregistered when spring
* shuts down. This is mostly required for tests/when running multiple application contexts within the same JVM.
*
* @param nameResolverProviders The spring managed providers to manage.
* @return The newly created NameResolverRegistration bean.
*/
@ConditionalOnMissingBean
@Lazy
@Bean
NameResolverRegistration grpcNameResolverRegistration(
@Autowired(required = false) final List<NameResolverProvider> nameResolverProviders) {
NameResolverRegistration nameResolverRegistration = new NameResolverRegistration(nameResolverProviders);
nameResolverRegistration.register(NameResolverRegistry.getDefaultRegistry());
return nameResolverRegistration;
}
/**
* Register all NameResolverProviders in the given registry and store a reference to it for later de-registration.
*
* @param registry The registry to add the providers to.
*/
public void register(NameResolverRegistry registry) {
this.registries.add(registry);
for (NameResolverProvider provider : this.providers) {
try {
registry.register(provider);
log.info("{} is available -> Added to the NameResolverRegistry", provider);
} catch (IllegalArgumentException e) {
log.info("{} is not available -> Not added to the NameResolverRegistry", provider);
}
}
}
@Override
public void destroy() {
for (NameResolverRegistry registry : this.registries) {
for (NameResolverProvider provider : this.providers) {
registry.deregister(provider);
log.info("{} was removed from the NameResolverRegistry", provider);
}
}
this.registries.clear();
}
/**
* Creates a new NameResolverRegistration. This ensures that the NameResolverProvider's get unregistered when spring
* shuts down. This is mostly required for tests/when running multiple application contexts within the same JVM.
*
* @param nameResolverProviders The spring managed providers to manage.
* @return The newly created NameResolverRegistration bean.
*/
@ConditionalOnMissingBean
@Lazy
@Bean
NameResolverRegistration grpcNameResolverRegistration(
@Autowired(required = false) final List<NameResolverProvider> nameResolverProviders) {
NameResolverRegistration nameResolverRegistration = new NameResolverRegistration(nameResolverProviders);
nameResolverRegistration.register(NameResolverRegistry.getDefaultRegistry());
return nameResolverRegistration;
}
@Activate
public void activate() {
componentConfigService.registerProperties(getClass());
channels = new ConcurrentHashMap<>();
interceptors = new ConcurrentHashMap<>();
LoadBalancerRegistry.getDefaultRegistry()
.register(PICK_FIRST_LOAD_BALANCER_PROVIDER);
NameResolverRegistry.getDefaultRegistry()
.register(DNS_NAME_RESOLVER_PROVIDER);
log.info("Started");
}
@Deactivate
public void deactivate() {
LoadBalancerRegistry.getDefaultRegistry()
.deregister(PICK_FIRST_LOAD_BALANCER_PROVIDER);
NameResolverRegistry.getDefaultRegistry()
.register(DNS_NAME_RESOLVER_PROVIDER);
componentConfigService.unregisterProperties(getClass(), false);
channels.values().forEach(ManagedChannel::shutdownNow);
channels.clear();
channels = null;
interceptors.values().forEach(GrpcLoggingInterceptor::close);
interceptors.clear();
interceptors = null;
log.info("Stopped");
}
@Test
public void lbHelper_getNameResolverRegistry() {
createChannel();
assertThat(helper.getNameResolverRegistry())
.isSameInstanceAs(NameResolverRegistry.getDefaultRegistry());
}
@After
public void tearDown() {
if (fakeNameResolverFactory != null) {
NameResolverRegistry.getDefaultRegistry().deregister(fakeNameResolverFactory);
}
}
@Override
public NameResolverRegistry getNameResolverRegistry() {
return nameResolverRegistry;
}
@Override
public NameResolverRegistry getNameResolverRegistry() {
return delegate().getNameResolverRegistry();
}