Class NettyChannelBuilder
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate final classstatic classThis class is meant to be overriden with a custom implementation ofNettyChannelBuilder.LocalSocketPicker.createSocketAddress(SocketAddress, Attributes).private final classprivate final classprivate static final classCreates Netty transports.Nested classes/interfaces inherited from class ManagedChannelBuilder
ManagedChannelBuilder.InterceptorFactory -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final longprivate booleanprivate io.netty.channel.ChannelFactory<? extends io.netty.channel.Channel> private static final booleanprivate static final io.netty.channel.ChannelFactory<? extends io.netty.channel.Channel> private static final ObjectPool<? extends io.netty.channel.EventLoopGroup> static final intprivate ObjectPool<? extends io.netty.channel.EventLoopGroup> private intprivate final booleanprivate longprivate longprivate booleanprivate final ManagedChannelImplBuilderprivate intprivate intprivate ProtocolNegotiator.ClientFactoryprivate Class<? extends SocketAddress> private TransportTracer.Factoryprivate final booleanIf true, indicates that the transport may use the GET method for RPCs, and may include the request body in the query params. -
Constructor Summary
ConstructorsConstructorDescriptionNettyChannelBuilder(String target) NettyChannelBuilder(String target, ChannelCredentials channelCreds, CallCredentials callCreds, ProtocolNegotiator.ClientFactory negotiator) NettyChannelBuilder(SocketAddress address) NettyChannelBuilder(SocketAddress address, ChannelCredentials channelCreds, CallCredentials callCreds, ProtocolNegotiator.ClientFactory negotiator) -
Method Summary
Modifier and TypeMethodDescription(package private) void(package private) ClientTransportFactorychannelFactory(io.netty.channel.ChannelFactory<? extends io.netty.channel.Channel> channelFactory) Specifies theChannelFactoryto createChannelinstances.channelFactory(io.netty.channel.ChannelFactory<? extends io.netty.channel.Channel> channelFactory, Class<? extends SocketAddress> transportSocketType) Similar tochannelFactory(ChannelFactory)above but allows the caller to specify the socket-type associated with the channelFactory.channelType(Class<? extends io.netty.channel.Channel> channelType) Specifies the channel type to use, by default we useEpollSocketChannelif available, otherwise usingNioSocketChannel.channelType(Class<? extends io.netty.channel.Channel> channelType, Class<? extends SocketAddress> transportSocketType) Similar tochannelType(Class)above but allows the caller to specify the socket-type associated with the channelType.(package private) static ProtocolNegotiatorcreateProtocolNegotiatorByType(NegotiationType negotiationType, io.netty.handler.ssl.SslContext sslContext, ObjectPool<? extends Executor> executorPool) protected ManagedChannelBuilder<?> delegate()Returns the delegatedManagedChannelBuilder.(package private) NettyChannelBuilder(package private) NettyChannelBuildereventLoopGroup(io.netty.channel.EventLoopGroup eventLoopGroup) Provides an EventGroupLoop to be used by the netty transport.(package private) NettyChannelBuildereventLoopGroupPool(ObjectPool<? extends io.netty.channel.EventLoopGroup> eventLoopGroupPool) flowControlWindow(int flowControlWindow) Sets the flow control window in bytes.static NettyChannelBuilderforAddress(String host, int port) Creates a new builder with the given host and port.static NettyChannelBuilderforAddress(String host, int port, ChannelCredentials creds) Creates a new builder with the given host and port.static NettyChannelBuilderforAddress(SocketAddress serverAddress) Creates a new builder with the given server address.static NettyChannelBuilderforAddress(SocketAddress serverAddress, ChannelCredentials creds) Creates a new builder with the given server address.static NettyChannelBuilderCreates a new builder with the given target string that will be resolved byNameResolver.static NettyChannelBuilderforTarget(String target, ChannelCredentials creds) Creates a new builder with the given target string that will be resolved byNameResolver.private static StringgetAuthorityFromAddress(SocketAddress address) (package private) int(package private) static Collection<Class<? extends SocketAddress>> initialFlowControlWindow(int initialFlowControlWindow) Sets the initial flow control window in bytes.keepAliveTime(long keepAliveTime, TimeUnit timeUnit) Sets the time without read activity before sending a keepalive ping.keepAliveTimeout(long keepAliveTimeout, TimeUnit timeUnit) Sets the time waiting for read activity after sending a keepalive ping.keepAliveWithoutCalls(boolean enable) Sets whether keepalive will be performed when there are no outstanding RPC on a connection.localSocketPicker(NettyChannelBuilder.LocalSocketPicker localSocketPicker) If non-null, attempts to create connections bound to a local port.maxHeaderListSize(int maxHeaderListSize) Deprecated.maxInboundMessageSize(int max) Sets the maximum message size allowed for a single gRPC frame.maxInboundMetadataSize(int bytes) Sets the maximum size of metadata allowed to be received.Sets the negotiation type for the HTTP/2 connection.(package private) voidprotocolNegotiatorFactory(ProtocolNegotiator.ClientFactory protocolNegotiatorFactory) (package private) voidsetStatsEnabled(boolean value) (package private) voidsetStatsRecordFinishedRpcs(boolean value) (package private) voidsetStatsRecordRealTimeMetrics(boolean value) (package private) voidsetStatsRecordRetryMetrics(boolean value) (package private) voidsetStatsRecordStartedRpcs(boolean value) (package private) voidsetTracingEnabled(boolean value) (package private) NettyChannelBuildersetTransportTracerFactory(TransportTracer.Factory transportTracerFactory) sslContext(io.netty.handler.ssl.SslContext sslContext) SSL/TLS context to use instead of the system default.Equivalent to usingnegotiationType(NegotiationType)withPLAINTEXT.Equivalent to usingnegotiationType(NegotiationType)withTLS.withOption(io.netty.channel.ChannelOption<T> option, T value) Specifies a channel option.Methods inherited from class ForwardingChannelBuilder2
addMetricSink, addTransportFilter, build, compressorRegistry, decompressorRegistry, defaultLoadBalancingPolicy, defaultServiceConfig, directExecutor, disableRetry, disableServiceConfigLookUp, enableRetry, executor, idleTimeout, intercept, intercept, interceptWithTarget, maxHedgedAttempts, maxRetryAttempts, maxTraceEvents, nameResolverFactory, offloadExecutor, overrideAuthority, perRpcBufferLimit, proxyDetector, retryBufferSize, setBinaryLog, toString, userAgent
-
Field Details
-
DEFAULT_FLOW_CONTROL_WINDOW
public static final int DEFAULT_FLOW_CONTROL_WINDOW- See Also:
-
DEFAULT_AUTO_FLOW_CONTROL
private static final boolean DEFAULT_AUTO_FLOW_CONTROL -
AS_LARGE_AS_INFINITE
private static final long AS_LARGE_AS_INFINITE -
DEFAULT_CHANNEL_FACTORY
private static final io.netty.channel.ChannelFactory<? extends io.netty.channel.Channel> DEFAULT_CHANNEL_FACTORY -
DEFAULT_EVENT_LOOP_GROUP_POOL
private static final ObjectPool<? extends io.netty.channel.EventLoopGroup> DEFAULT_EVENT_LOOP_GROUP_POOL -
managedChannelImplBuilder
-
transportTracerFactory
-
channelOptions
-
channelFactory
private io.netty.channel.ChannelFactory<? extends io.netty.channel.Channel> channelFactory -
eventLoopGroupPool
-
autoFlowControl
private boolean autoFlowControl -
flowControlWindow
private int flowControlWindow -
maxHeaderListSize
private int maxHeaderListSize -
maxInboundMessageSize
private int maxInboundMessageSize -
keepAliveTimeNanos
private long keepAliveTimeNanos -
keepAliveTimeoutNanos
private long keepAliveTimeoutNanos -
keepAliveWithoutCalls
private boolean keepAliveWithoutCalls -
protocolNegotiatorFactory
-
freezeProtocolNegotiatorFactory
private final boolean freezeProtocolNegotiatorFactory -
localSocketPicker
-
useGetForSafeMethods
private final boolean useGetForSafeMethodsIf true, indicates that the transport may use the GET method for RPCs, and may include the request body in the query params.- See Also:
-
transportSocketType
-
-
Constructor Details
-
NettyChannelBuilder
NettyChannelBuilder(String target) -
NettyChannelBuilder
NettyChannelBuilder(String target, ChannelCredentials channelCreds, CallCredentials callCreds, ProtocolNegotiator.ClientFactory negotiator) -
NettyChannelBuilder
NettyChannelBuilder(SocketAddress address) -
NettyChannelBuilder
NettyChannelBuilder(SocketAddress address, ChannelCredentials channelCreds, CallCredentials callCreds, ProtocolNegotiator.ClientFactory negotiator)
-
-
Method Details
-
forAddress
Creates a new builder with the given server address. This factory method is primarily intended for using Netty Channel types other than SocketChannel.forAddress(String, int)should generally be preferred over this method, since that API permits delaying DNS lookups and noticing changes to DNS. If an unresolved InetSocketAddress is passed in, then it will remain unresolved. -
forAddress
Creates a new builder with the given server address. This factory method is primarily intended for using Netty Channel types other than SocketChannel.forAddress(String, int, ChannelCredentials)should generally be preferred over this method, since that API permits delaying DNS lookups and noticing changes to DNS. If an unresolved InetSocketAddress is passed in, then it will remain unresolved. -
forAddress
Creates a new builder with the given host and port. -
forAddress
Creates a new builder with the given host and port. -
forTarget
Creates a new builder with the given target string that will be resolved byNameResolver. -
forTarget
Creates a new builder with the given target string that will be resolved byNameResolver. -
delegate
Description copied from class:ForwardingChannelBuilder2Returns the delegatedManagedChannelBuilder.- Specified by:
delegatein classForwardingChannelBuilder2<NettyChannelBuilder>
-
getAuthorityFromAddress
-
channelType
@CanIgnoreReturnValue public NettyChannelBuilder channelType(Class<? extends io.netty.channel.Channel> channelType) Specifies the channel type to use, by default we useEpollSocketChannelif available, otherwise usingNioSocketChannel.You either use this or
channelFactory(io.netty.channel.ChannelFactory)if yourChannelimplementation has no no-args constructor.It's an optional parameter. If the user has not provided an Channel type or ChannelFactory when the channel is built, the builder will use the default one which is static.
You must also provide corresponding
eventLoopGroup(EventLoopGroup). For example,NioSocketChannelmust useNioEventLoopGroup, otherwise your application won't start. -
channelType
@CanIgnoreReturnValue public NettyChannelBuilder channelType(Class<? extends io.netty.channel.Channel> channelType, @Nullable Class<? extends SocketAddress> transportSocketType) Similar tochannelType(Class)above but allows the caller to specify the socket-type associated with the channelType.- Parameters:
channelType- the type ofChannelto use.transportSocketType- the associatedSocketAddresstype. Ifnull, then no compatibility check is performed between channel transport and name-resolver addresses.
-
channelFactory
@CanIgnoreReturnValue public NettyChannelBuilder channelFactory(io.netty.channel.ChannelFactory<? extends io.netty.channel.Channel> channelFactory) Specifies theChannelFactoryto createChannelinstances. This method is usually only used if the specificChannelrequires complex logic which requires additional information to create theChannel. Otherwise, recommend to usechannelType(Class).It's an optional parameter. If the user has not provided an Channel type or ChannelFactory when the channel is built, the builder will use the default one which is static.
You must also provide corresponding
eventLoopGroup(EventLoopGroup). For example,NioSocketChannelbasedChannelFactorymust useNioEventLoopGroup, otherwise your application won't start. -
channelFactory
@CanIgnoreReturnValue public NettyChannelBuilder channelFactory(io.netty.channel.ChannelFactory<? extends io.netty.channel.Channel> channelFactory, @Nullable Class<? extends SocketAddress> transportSocketType) Similar tochannelFactory(ChannelFactory)above but allows the caller to specify the socket-type associated with the channelFactory.- Parameters:
channelFactory- theChannelFactoryto use.transportSocketType- the associatedSocketAddresstype. Ifnull, then no compatibility check is performed between channel transport and name-resolver addresses.
-
withOption
@CanIgnoreReturnValue public <T> NettyChannelBuilder withOption(io.netty.channel.ChannelOption<T> option, T value) Specifies a channel option. As the underlying channel as well as network implementation may ignore this value applications should consider it a hint. -
negotiationType
Sets the negotiation type for the HTTP/2 connection.Default:
TLS -
eventLoopGroup
@CanIgnoreReturnValue public NettyChannelBuilder eventLoopGroup(@Nullable io.netty.channel.EventLoopGroup eventLoopGroup) Provides an EventGroupLoop to be used by the netty transport.It's an optional parameter. If the user has not provided an EventGroupLoop when the channel is built, the builder will use the default one which is static.
You must also provide corresponding
channelType(Class)orchannelFactory(ChannelFactory)corresponding to the givenEventLoopGroup. For example,NioEventLoopGrouprequiresNioSocketChannelThe channel won't take ownership of the given EventLoopGroup. It's caller's responsibility to shut it down when it's desired.
-
eventLoopGroupPool
@CanIgnoreReturnValue NettyChannelBuilder eventLoopGroupPool(ObjectPool<? extends io.netty.channel.EventLoopGroup> eventLoopGroupPool) -
sslContext
@CanIgnoreReturnValue public NettyChannelBuilder sslContext(io.netty.handler.ssl.SslContext sslContext) SSL/TLS context to use instead of the system default. It must have been configured withGrpcSslContexts, but options could have been overridden. -
initialFlowControlWindow
@CanIgnoreReturnValue public NettyChannelBuilder initialFlowControlWindow(int initialFlowControlWindow) Sets the initial flow control window in bytes. Setting initial flow control window enables auto flow control tuning using bandwidth-delay product algorithm. To disable auto flow control tuning, useflowControlWindow(int). By default, auto flow control is enabled with initial flow control window size ofDEFAULT_FLOW_CONTROL_WINDOW. -
flowControlWindow
Sets the flow control window in bytes. Setting flowControlWindow disables auto flow control tuning; useinitialFlowControlWindow(int)to enable auto flow control tuning. If not called, the default value isDEFAULT_FLOW_CONTROL_WINDOW) with auto flow control tuning. -
maxHeaderListSize
@CanIgnoreReturnValue @Deprecated @InlineMe(replacement="this.maxInboundMetadataSize(maxHeaderListSize)") public NettyChannelBuilder maxHeaderListSize(int maxHeaderListSize) Deprecated.UsemaxInboundMetadataSize(int)insteadSets the maximum size of header list allowed to be received. This is cumulative size of the headers with some overhead, as defined for HTTP/2's SETTINGS_MAX_HEADER_LIST_SIZE. The default is 8 KiB. -
maxInboundMetadataSize
Sets the maximum size of metadata allowed to be received. This is cumulative size of the entries with some overhead, as defined for HTTP/2's SETTINGS_MAX_HEADER_LIST_SIZE. The default is 8 KiB.- Overrides:
maxInboundMetadataSizein classForwardingChannelBuilder2<NettyChannelBuilder>- Parameters:
bytes- the maximum size of received metadata- Returns:
- this
- Throws:
IllegalArgumentException- if bytes is non-positive- Since:
- 1.17.0
-
usePlaintext
Equivalent to usingnegotiationType(NegotiationType)withPLAINTEXT.- Overrides:
usePlaintextin classForwardingChannelBuilder2<NettyChannelBuilder>- Returns:
- this
-
useTransportSecurity
Equivalent to usingnegotiationType(NegotiationType)withTLS.- Overrides:
useTransportSecurityin classForwardingChannelBuilder2<NettyChannelBuilder>- Returns:
- this
-
keepAliveTime
@CanIgnoreReturnValue public NettyChannelBuilder keepAliveTime(long keepAliveTime, TimeUnit timeUnit) Sets the time without read activity before sending a keepalive ping. An unreasonably small value might be increased, andLong.MAX_VALUEnano seconds or an unreasonably large value will disable keepalive. Defaults to infinite.Clients must receive permission from the service owner before enabling this option. Keepalives can increase the load on services and are commonly "invisible" making it hard to notice when they are causing excessive load. Clients are strongly encouraged to use only as small of a value as necessary.
- Overrides:
keepAliveTimein classForwardingChannelBuilder2<NettyChannelBuilder>- Since:
- 1.3.0
- See Also:
-
keepAliveTimeout
@CanIgnoreReturnValue public NettyChannelBuilder keepAliveTimeout(long keepAliveTimeout, TimeUnit timeUnit) Sets the time waiting for read activity after sending a keepalive ping. If the time expires without any read activity on the connection, the connection is considered dead. An unreasonably small value might be increased. Defaults to 20 seconds.This value should be at least multiple times the RTT to allow for lost packets.
- Overrides:
keepAliveTimeoutin classForwardingChannelBuilder2<NettyChannelBuilder>- Since:
- 1.3.0
- See Also:
-
keepAliveWithoutCalls
Sets whether keepalive will be performed when there are no outstanding RPC on a connection. Defaults tofalse.Clients must receive permission from the service owner before enabling this option. Keepalives on unused connections can easilly accidentally consume a considerable amount of bandwidth and CPU.
idleTimeout()should generally be used instead of this option.- Overrides:
keepAliveWithoutCallsin classForwardingChannelBuilder2<NettyChannelBuilder>- Since:
- 1.3.0
- See Also:
-
localSocketPicker
@CanIgnoreReturnValue public NettyChannelBuilder localSocketPicker(@Nullable NettyChannelBuilder.LocalSocketPicker localSocketPicker) If non-null, attempts to create connections bound to a local port. -
maxInboundMessageSize
Sets the maximum message size allowed for a single gRPC frame. If an inbound messages larger than this limit is received it will not be processed and the RPC will fail with RESOURCE_EXHAUSTED.- Overrides:
maxInboundMessageSizein classForwardingChannelBuilder2<NettyChannelBuilder>- Parameters:
max- the maximum number of bytes a single message can be.- Returns:
- this
-
buildTransportFactory
ClientTransportFactory buildTransportFactory() -
assertEventLoopAndChannelType
void assertEventLoopAndChannelType() -
getDefaultPort
int getDefaultPort() -
createProtocolNegotiatorByType
static ProtocolNegotiator createProtocolNegotiatorByType(NegotiationType negotiationType, io.netty.handler.ssl.SslContext sslContext, ObjectPool<? extends Executor> executorPool) -
disableCheckAuthority
-
enableCheckAuthority
-
protocolNegotiatorFactory
-
setTracingEnabled
void setTracingEnabled(boolean value) -
setStatsEnabled
void setStatsEnabled(boolean value) -
setStatsRecordStartedRpcs
void setStatsRecordStartedRpcs(boolean value) -
setStatsRecordFinishedRpcs
void setStatsRecordFinishedRpcs(boolean value) -
setStatsRecordRealTimeMetrics
void setStatsRecordRealTimeMetrics(boolean value) -
setStatsRecordRetryMetrics
void setStatsRecordRetryMetrics(boolean value) -
setTransportTracerFactory
@CanIgnoreReturnValue NettyChannelBuilder setTransportTracerFactory(TransportTracer.Factory transportTracerFactory) -
getSupportedSocketAddressTypes
-
maxInboundMetadataSize(int)instead