下面列出了io.grpc.netty.NettyServerBuilder#forAddress ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
GrpcStartable(GrpcServerConfig serverConfig, Tracing tracing, BindableService... services) {
ServerBuilder<?> serverBuilder;
if (serverConfig.isSslEnable()) {
serverBuilder = NettyServerBuilder.forAddress(
new InetSocketAddress(serverConfig.getHost(), serverConfig.getPort()));
try {
((NettyServerBuilder) serverBuilder).sslContext(getSslContextBuilder(serverConfig).build());
} catch (SSLException e) {
throw new IllegalStateException("Unable to setup grpc to use SSL.", e);
}
} else {
serverBuilder = ServerBuilder.forPort(serverConfig.getPort());
}
// Arrays.stream(services).forEach(serverBuilder::addService);
// add interceptor for grpc server By Gannalyo
Arrays.stream(services).forEach(service ->
serverBuilder.addService(ServerInterceptors.intercept(service,
GrpcTracing.create(tracing).newServerInterceptor())));
server = serverBuilder.build();
}
/**
* Default constructor.
* @param environment The environment
* @param serverHost The server host
* @param serverPort The server port
* @param executorService The IO executor service
*/
public GrpcServerConfiguration(
Environment environment,
@Property(name = HOST) @Nullable String serverHost,
@Property(name = PORT) @Nullable Integer serverPort,
@Named(TaskExecutors.IO) ExecutorService executorService) {
this.environment = environment;
this.serverPort = serverPort != null ? serverPort :
environment.getActiveNames().contains(Environment.TEST) ? SocketUtils.findAvailableTcpPort() : DEFAULT_PORT;
this.serverHost = serverHost;
if (serverHost != null) {
this.serverBuilder = NettyServerBuilder.forAddress(
new InetSocketAddress(serverHost, this.serverPort)
);
} else {
this.serverBuilder = NettyServerBuilder.forPort(this.serverPort);
}
this.serverBuilder.executor(executorService);
}
/**
* Default constructor.
* @param environment The environment
* @param serverHost The server host
* @param serverPort The server port
* @param executorService The IO executor service
*/
public GrpcServerConfiguration(
Environment environment,
@Property(name = HOST) @Nullable String serverHost,
@Property(name = PORT) @Nullable Integer serverPort,
@Named(TaskExecutors.IO) ExecutorService executorService) {
this.environment = environment;
this.serverPort = serverPort != null ? serverPort :
environment.getActiveNames().contains(Environment.TEST) ? SocketUtils.findAvailableTcpPort() : DEFAULT_PORT;
this.serverHost = serverHost;
if (serverHost != null) {
this.serverBuilder = NettyServerBuilder.forAddress(
new InetSocketAddress(serverHost, this.serverPort)
);
} else {
this.serverBuilder = NettyServerBuilder.forPort(this.serverPort);
}
this.serverBuilder.executor(executorService);
}
private static Server startServer(String bindAddress, int port, boolean https, File confDir,
@Nullable ExecutorService confDirWatchExecutor, DownstreamServiceImpl downstreamService,
CollectorServiceImpl collectorService) throws IOException {
NettyServerBuilder builder =
NettyServerBuilder.forAddress(new InetSocketAddress(bindAddress, port));
if (https) {
builder.sslContext(
DelegatingSslContext.create(confDir, checkNotNull(confDirWatchExecutor)));
}
return builder.addService(collectorService.bindService())
.addService(downstreamService.bindService())
// need to override default max message size of 4mb until streaming is implemented
// for DownstreamService.EntriesResponse and FullTraceResponse
.maxInboundMessageSize(64 * 1024 * 1024)
// aggressive keep alive is used by agent to detect silently dropped connections
// (see org.glowroot.agent.central.CentralConnection)
.permitKeepAliveTime(20, SECONDS)
// aggressive max connection age forces agents to re-resolve DNS often for DNS-based
// load balancing (e.g. to pick up and spread load across new central collectors)
.maxConnectionAge(20, MINUTES)
.build()
.start();
}
@Override
protected NettyServerBuilder newServerBuilder() {
final String address = getAddress();
final int port = getPort();
if (GrpcServerProperties.ANY_IP_ADDRESS.equals(address)) {
return NettyServerBuilder.forPort(port);
} else {
return NettyServerBuilder.forAddress(new InetSocketAddress(InetAddresses.forString(address), port));
}
}
private static void startServerOnPort(int port) {
ServerBuilder<?> serverBuilder = NettyServerBuilder.forAddress(
new InetSocketAddress("127.0.0.1", port));
serverBuilder.addService(new MyTccEventServiceImpl(connected.get(port), eventsMap.get(port), delays.get(port)));
Server server = serverBuilder.build();
try {
server.start();
servers.put(port, server);
} catch (Exception ex) {
fail(ex.getMessage());
}
}
@Override
protected NettyServerBuilder newServerBuilder() {
final String address = getAddress();
final int port = getPort();
if (GrpcServerProperties.ANY_IP_ADDRESS.equals(address)) {
return NettyServerBuilder.forPort(port);
} else {
return NettyServerBuilder.forAddress(new InetSocketAddress(InetAddresses.forString(address), port));
}
}
@Override
public void initialize() {
InetSocketAddress address = new InetSocketAddress(host, port);
ArrayBlockingQueue blockingQueue = new ArrayBlockingQueue(threadPoolQueueSize);
ExecutorService executor = new ThreadPoolExecutor(threadPoolSize, threadPoolSize, 60, TimeUnit.SECONDS, blockingQueue, new CustomThreadFactory("grpcServerPool"), new CustomRejectedExecutionHandler());
nettyServerBuilder = NettyServerBuilder.forAddress(address);
nettyServerBuilder = nettyServerBuilder.maxConcurrentCallsPerConnection(maxConcurrentCallsPerConnection)
.maxMessageSize(maxMessageSize)
.executor(executor);
logger.info("Server started, host {} listening on {}", host, port);
}
public Server build() {
InetSocketAddress bindAddress = new InetSocketAddress(this.hostname, this.port);
NettyServerBuilder serverBuilder = NettyServerBuilder.forAddress(bindAddress);
serverBuilder.bossEventLoopGroup(bossEventLoopGroup);
serverBuilder.workerEventLoopGroup(workerEventLoopGroup);
setupInternal(serverBuilder);
for (Object service : this.bindableServices) {
if (service instanceof BindableService) {
logger.info("Add BindableService={}, server={}", service, name);
serverBuilder.addService((BindableService) service);
} else if (service instanceof ServerServiceDefinition) {
final ServerServiceDefinition definition = (ServerServiceDefinition) service;
logger.info("Add ServerServiceDefinition={}, server={}", definition.getServiceDescriptor(), name);
serverBuilder.addService(definition);
}
}
for (ServerTransportFilter transportFilter : this.serverTransportFilters) {
logger.info("Add transportFilter={}, server={}", transportFilter, name);
serverBuilder.addTransportFilter(transportFilter);
}
for (ServerInterceptor serverInterceptor : this.serverInterceptors) {
logger.info("Add intercept={}, server={}", serverInterceptor, name);
serverBuilder.intercept(serverInterceptor);
}
serverBuilder.executor(serverExecutor);
setupServerOption(serverBuilder);
Server server = serverBuilder.build();
return server;
}
private static Server getServer(String endPoint, BindableService service) {
ServerBuilder<?> builder = NettyServerBuilder.forAddress(parseEndpoint(endPoint));
Executor executor = MoreExecutors.directExecutor();
builder.executor(executor);
return builder.addService(service).build();
}
private static Server getServer(String endPoint, BindableService service) throws IOException {
ServerBuilder<?> builder = NettyServerBuilder.forAddress(parseEndpoint(endPoint));
Executor executor = MoreExecutors.directExecutor();
builder.executor(executor);
return builder.addService(service).build();
}
/** Creates a gRPC server builder for the given port. */
public static XdsServerBuilder forPort(int port) {
NettyServerBuilder nettyDelegate = NettyServerBuilder.forAddress(new InetSocketAddress(port));
return new XdsServerBuilder(nettyDelegate, port);
}
/** Creates a gRPC server builder for the given port. */
public static AltsServerBuilder forPort(int port) {
NettyServerBuilder nettyDelegate = NettyServerBuilder.forAddress(new InetSocketAddress(port));
return new AltsServerBuilder(nettyDelegate);
}