diff --git a/java/grpc-client/src/main/java/io/vitess/client/grpc/GrpcClientFactory.java b/java/grpc-client/src/main/java/io/vitess/client/grpc/GrpcClientFactory.java index 10b3ee63178..928c29334ee 100644 --- a/java/grpc-client/src/main/java/io/vitess/client/grpc/GrpcClientFactory.java +++ b/java/grpc-client/src/main/java/io/vitess/client/grpc/GrpcClientFactory.java @@ -88,9 +88,9 @@ public GrpcClientFactory setNameResolverFactory(NameResolver.Factory value) { */ @Override public RpcClient create(Context ctx, String target) { - NettyChannelBuilder channel = NettyChannelBuilder.forTarget(target) - .negotiationType(NegotiationType.PLAINTEXT) - .intercept(new RetryingInterceptor(config)); + NettyChannelBuilder channel = channelBuilder(target) + .negotiationType(NegotiationType.PLAINTEXT) + .intercept(new RetryingInterceptor(config)); if (loadBalancerFactory != null) { channel.loadBalancerFactory(loadBalancerFactory); } @@ -98,7 +98,29 @@ public RpcClient create(Context ctx, String target) { channel.nameResolverFactory(nameResolverFactory); } return callCredentials != null ? - new GrpcClient(channel.build(), callCredentials) : new GrpcClient(channel.build()); + new GrpcClient(channel.build(), callCredentials) : new GrpcClient(channel.build()); + } + + /** + *
This method constructs NettyChannelBuilder object that will be used to create RpcClient.
+ *Subclasses may override this method to make adjustments to the builder
+ * for example: + *
+ * @Override
+ * protected NettyChannelBuilder channelBuilder(String target) {
+ * return super.channelBuilder(target)
+ * .eventLoopGroup(new EpollEventLoopGroup())
+ * .withOption(EpollChannelOption.TCP_USER_TIMEOUT,30);
+ * }
+ *
+ *
+ *
+ * @param target
+ * target is passed to NettyChannelBuilder which will resolve based on scheme, by default dns.
+ * @return
+ */
+ protected NettyChannelBuilder channelBuilder(String target){
+ return NettyChannelBuilder.forTarget(target);
}
/**
@@ -152,7 +174,7 @@ public RpcClient createTls(Context ctx, String target, TlsOptions tlsOptions) {
}
return new GrpcClient(
- NettyChannelBuilder.forTarget(target).negotiationType(NegotiationType.TLS).sslContext(sslContext).intercept(new RetryingInterceptor(config)).build());
+ channelBuilder(target).negotiationType(NegotiationType.TLS).sslContext(sslContext).intercept(new RetryingInterceptor(config)).build());
}
/**