46.3. 组件选项
Netty 组件支持 73 选项,如下所列。
Name | 描述 | 默认值 | 类型 |
---|---|---|---|
configuration (common) | 在创建端点时,使用 NettyConfiguration 作为配置。 | NettyConfiguration | |
disconnect (common) | 是否在使用后是否断开(close)与 Netty Channel 的连接。可用于消费者和生产者。 | false | 布尔值 |
keepalive ( common) | 设置以确保不活动而关闭套接字。 | true | 布尔值 |
reuseAddress (common) | 设置以方便套接字多路。 | true | 布尔值 |
reuseChannel (common) | 此选项允许生产者和消费者(客户端模式)在处理交换的生命周期内重复使用相同的 Netty Channel。如果您需要在 Camel 路由中多次调用服务器并希望使用相同的网络连接,这非常有用。使用此选项时,频道不会返回到连接池,直到交换完成为止;如果 disconnect 选项设为 true,则不会断开连接。重复使用的频道作为交换属性存储在交换属性上,其键为 NettyConstants,Y_CHANNEL 允许您在路由期间获取频道并使用它。 | false | 布尔值 |
sync (common) | 设置为将端点设置为单向或请求响应。 | true | 布尔值 |
tcpNoDelay (common) | 设置以提高 TCP 协议性能。 | true | 布尔值 |
bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由错误处理程序,这意味着当消费者试图选择传入消息或类似信息时发生异常,现在将作为消息处理并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.ExceptionHandler 来处理例外情况,该处理程序将被记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
broadcast (consumer) | 设置以选择多播通过 UDP。 | false | 布尔值 |
clientMode (consumer) | 如果 clientMode 为 true,netty consumer 会将地址连接为 TCP 客户端。 | false | 布尔值 |
reconnect (consumer) | 只在消费者中的 clientMode 中使用,消费者将尝试断开连接时重新连接。 | true | 布尔值 |
reconnectInterval (consumer) | 如果启用了 reconnect 和 clientMode,则使用。尝试重新连接的时间间隔(以毫秒为单位)。 | 10000 | int |
Back log (consumer (advanced)) | 允许为 netty consumer (server)配置积压。请注意,回放是根据操作系统的最佳工作。将这个选项设置为 200、500 或 1000 等值,请告知 TCP 堆栈如果未配置此选项,则接受队列的时长,则 backlog 依赖于 OS 设置。 | int | |
bossCount (consumer (advanced)) | 当 netty 在 nio 模式上工作时,它会使用来自 Netty 的默认 bossCount 参数,即 1。用户可以使用这个选项覆盖 Netty 中的默认 bossCount。 | 1 | int |
bossGroup (consumer (advanced)) | 设置 BossGroup,可用于处理 NettyEndpoint 中服务器端的新连接。 | EventLoopGroup | |
disconnectOnNoReply (consumer (advanced)) | 如果启用了同步,则此选项指定 NettyConsumer (如果它应该断开任何回复的回复),则此选项指定 NettyConsumer。 | true | 布尔值 |
executorService (consumer (advanced)) | 使用给定的 EventExecutorGroup。 | EventExecutorGroup | |
maximumPoolSize (consumer (advanced)) | 为 netty consumer 排序的线程池设置最大线程池大小。默认大小为 2 x cpu_core 加上 1。将此值设置为 eg 10 将使用 10 个线程,除非 2 x cpu_core 加上 1 的值更高,然后会覆盖和使用它。例如,如果存在 8 个内核,则消费者线程池将为 17。此线程池用于路由 Camel 从 Netty 接收的消息。我们使用单独的线程池来确保对消息排序,并在某些消息被阻止时,则 nettys worker 线程(event loop)不受影响。 | int | |
nettyServerBootstrapFactory (consumer (advanced)) | 使用自定义 NettyServerBootstrapFactory。 | NettyServerBootstrapFactory | |
networkInterface (consumer (advanced)) | 使用 UDP 时,此选项可用于按名称指定网络接口,如 eth0 以加入多播组。 | 字符串 | |
noReplyLogLevel (consumer (advanced)) | 如果启用了同步,则指定 NettyConsumer 在日志记录没有回复时要使用的日志级别。 Enum 值:
| WARN | LoggingLevel |
serverClosedChannelExceptionCaughtLogLevel (consumer (advanced)) | 如果服务器(NettyConsumer)捕获了 java.nio.channels.ClosedChannelException,则它会使用此日志级别登录。这用于避免记录关闭的通道异常,因为客户端可能会立即断开连接,从而导致 Netty 服务器出现关闭异常。 Enum 值:
| DEBUG | LoggingLevel |
serverExceptionCaughtLogLevel (consumer (advanced)) | 如果服务器(NettyConsumer)捕获异常,则它会使用此日志级别记录其日志记录。 Enum 值:
| WARN | LoggingLevel |
serverInitializerFactory (consumer (advanced)) | 使用自定义 ServerInitializerFactory。 | ServerInitializerFactory | |
usingExecutorService (consumer (advanced)) | 是否使用排序的线程池,以确保在同一频道中按顺序处理事件。 | true | 布尔值 |
connectTimeout (producer) | 等待套接字连接可用时的时间。值以毫秒为单位。 | 10000 | int |
lazyStartProducer (producer) | 生成者是否应懒惰启动 (在第一个消息中)。通过懒惰启动,您可以使用此选项来允许 CamelContext 和路由在生成者启动期间启动,并导致路由启动失败。通过懒惰启动,启动失败可以在路由信息时通过 Camel 的路由错误处理程序进行处理。请注意,在处理第一个消息时,创建并启动生成者可能需要稍等时间,并延长处理的总处理时间。 | false | 布尔值 |
requestTimeout (producer) | 在调用远程服务器时,允许将超时用于 Netty producer。默认情况下不使用超时。该值以秒为单位,因此 30000 为 30 秒。requestTimeout 使用 Netty 的 ReadTimeoutHandler 来触发超时。 | long | |
clientInitializerFactory (producer (advanced)) | 使用自定义 ClientInitializerFactory。 | ClientInitializerFactory | |
correlationManager (producer (advanced)) | 使用自定义关联管理器来管理在将 request/reply 与 netty producer 搭配使用时如何映射请求和回复消息。只有在您有一个将请求与回复一起映射(例如,请求和回复消息中存在关联 ID )时,才应使用此项。如果要在 netty 中在同一频道(连接连接)上多路复用。执行此操作时,您必须有一个方法来关联请求和回复消息,以便您可以在继续路由前将正确的回复存储在动态 Camel Exchange 中。在构建自定义关联经理时,我们建议扩展 TimeoutCorrelationManagerSupport。这提供了对其他需要实现的超时和其他复杂性的支持。如需了解更多详细信息,请参阅 producerPoolEnabled 选项。 | NettyCamelStateCorrelationManager | |
lazyChannelCreation (producer (advanced)) | 如果远程服务器在 Camel 生成者启动时没有启动并运行,则频道可能被创建以避免异常。 | true | 布尔值 |
producerPoolEnabled (producer (advanced)) | 生成者池是否已启用。重要:如果您关闭此,那么也会将单个共享连接用于生成者,即使您正在执行请求/回复。这意味着,如果回复未排序,则响应交集存在潜在的问题。因此,您需要在请求和回复消息中有一个关联 ID,以便您可以将回复正确与负责继续处理 Camel 中的消息的 Camel 回调关联。为此,您需要实施 NettyCamelStateCorrelationManager 作为关联管理器,并通过 correlationManager 选项进行配置。如需了解更多详细信息,请参阅 correlationManager 选项。 | true | 布尔值 |
producerPoolMaxIdle (producer (advanced)) | 设置池中闲置实例数量的上限。 | 100 | int |
producerPoolMaxTotal (producer (advanced)) | 设置池可分配的对象数量的上限(检查到客户端,或闲置等待签出)在给定时间闲置。对没有限制使用负值。 | -1 | int |
producerPoolMinEvictableIdle (producer (advanced)) | 在被闲置对象驱除前,设置对象可能闲置的最小时间(值为 millis)。 | 300000 | long |
producerPoolMinIdle (producer (advanced)) | 在驱除器线程(如果处于活动状态)前设置制作者池中允许的最小实例数量(如果处于活动状态)。 | int | |
udpConnectionlessSending (producer (advanced)) | 这个选项支持较少的 udp 发送的连接,这是实际触发和忘记。如果没有侦听接收端口,则连接的 udp 会接收 PortUnreachableException。 | false | 布尔值 |
useByteBuf (producer (advanced)) | 如果 useByteBuf 为 true,netty producer 会在发送前将消息正文转换为 ByteBuf。 | false | 布尔值 |
主机名验证( 安全) | 在 SSLEngine 上启用/禁用主机名验证。 | false | 布尔值 |
allowSerializedHeaders (advanced) | 仅在 transferExchange 为 true 时用于 TCP。当设置为 true 时,标头和属性中的可序列化对象将添加到交换中。否则,Camel 将排除任何不可序列化的对象,并将它记录在 WARN 级别。 | false | 布尔值 |
autowiredEnabled (advanced) | 是否启用自动关闭。这用于自动关闭选项(选项必须标记为 autowired),方法是在 registry 中查找查找是否有单个匹配类型实例,然后在组件上配置。这可以用于自动配置 JDBC 数据源、JMS 连接工厂、AWS 客户端等。 | true | 布尔值 |
channelGroup (advanced) | 使用显式 ChannelGroup。 | ChannelGroup | |
nativeTransport (advanced) | 是否使用原生传输而不是 NIO。原生传输利用主机操作系统,且仅在某些平台上被支持。您需要为您要使用的主机操作系统添加 netty JAR。详情请查看: | false | 布尔值 |
options (advanced) | 允许使用 option. 作为前缀来配置额外的 netty 选项。例如 option.child.keepAlive=false,来设置 netty 选项 child.keepAlive=false。有关可以使用的可能选项,请参阅 Netty 文档。 | Map | |
receiveBufferSize (advanced) | 在入站通信期间使用的 TCP/UDP 缓冲区大小。大小为字节。 | 65536 | int |
receiveBufferSizePredictor (advanced) | 配置缓冲区大小预测器。详情请参阅 Jetty 文档和此邮件线程。 | int | |
sendBufferSize (advanced) | 在出站通信期间使用的 TCP/UDP 缓冲区大小。大小为字节。 | 65536 | int |
transferExchange (advanced) | 仅用于 TCP。您可以在有线线上传输交换,而不只是正文。以下字段会被传输: 在 body, Out body, fault body, In headers, Out headers, fault headers, Exchange properties, exchange exception。这要求对象可以序列化。Camel 将排除任何不可序列化的对象,并将它记录在 WARN 级别。 | false | 布尔值 |
udpByteArrayCodec (advanced) | 仅限 UDP。如果启用了使用字节数组 codec 而不是 Java 序列化协议。 | false | 布尔值 |
workerCount (advanced) | 当 netty 在 nio 模式上工作时,它会使用来自 Netty 的默认 workerCount 参数(即 cpu_core_threads x 2)。用户可以使用这个选项覆盖 Netty 中的默认 workerCount。 | int | |
workerGroup (advanced) | 使用显式 EventLoopGroup 作为 boss 线程池。例如,与多个消费者或制作者共享线程池。默认情况下,每个消费者或生成者都有自己的 worker 池,具有 2 个 x cpu 计数内核线程。 | EventLoopGroup | |
allowDefaultCodec (codec) | 如果两者都默认 codec,netty 组件会安装一个默认的 codec,编码器/解码器为 null,文本行为 false。将 allowDefaultCodec 设置为 false 可防止 netty 组件安装默认 codec 作为过滤器链中的第一个元素。 | true | 布尔值 |
autoAppendDelimiter (codec) | 在使用文本 codec 发送时,是否自动附加缺少的最终分隔符。 | true | 布尔值 |
decoderMaxLineLength (codec) | 文本代码的最大行长度。 | 1024 | int |
解码器 (codec) | 要使用的解码器列表。您可以使用用逗号分开的值的字符串,并在 Registry 中查找值。只需记住使用 192.168.1.0/24 为值添加前缀,因此 Camel 知道它应该查找。 | list | |
Delimiter (codec) | 用于文本代码的分隔符。可能的值有 LINE 和 NULL。 Enum 值:
| 行 | TextLineDelimiter |
encoders (codec) | 要使用的编码程序列表。您可以使用用逗号分开的值的字符串,并在 Registry 中查找值。只需记住使用 192.168.1.0/24 为值添加前缀,因此 Camel 知道它应该查找。 | list | |
编码 (codec) | 用于文本代码的编码(charset 名称)。如果没有提供,Camel 将使用 JVM 默认 Charset。 | 字符串 | |
文本行 (codec) | 仅用于 TCP。如果没有指定 codec,您可以使用此标志来指示基于文本的 codec;如果没有指定,则为 false,则通过 TCP 假设对象序列化,但默认只允许对字符串进行序列化。 | false | 布尔值 |
enabledProtocols (security) | 使用 SSL 时要启用哪个协议。 | TLSv1,TLSv1.1,TLSv1.2 | 字符串 |
keyStoreFile (security) | 用于加密的客户端证书密钥存储。 | File | |
keyStoreFormat (security) | 用于有效负载加密的密钥存储格式。如果没有设置,则默认为 JKS。 | 字符串 | |
keyStoreResource (security) | 用于加密的客户端证书密钥存储。默认情况下从 classpath 加载,但您可以使用 classpath:、file: 或 http: 前缀来加载来自不同系统的资源。 | 字符串 | |
needClientAuth (security) | 配置服务器在使用 SSL 时是否需要客户端身份验证。 | false | 布尔值 |
密码短语 (安全) | 使用 SSH 加密/解密有效负载的密码设置。 | 字符串 | |
securityProvider (security) | 用于有效负载加密的安全提供程序。如果没有设置,则默认为 SunX509。 | 字符串 | |
SSL (安全) | 设置以指定 SSL 加密是否应用到此端点。 | false | 布尔值 |
sslClientCertHeaders (security) | 启用并在 SSL 模式中,Netty consumer 将增强 Camel Message,其标头包含有关客户端证书的信息,如主题名称、签发者名称、序列号和有效日期范围。 | false | 布尔值 |
sslContextParameters (security) | 使用 SSLContext 参数配置安全性: | SSLContextParameters | |
sslHandler (security) | 对可用于返回 SSL 处理程序的类的引用。 | SslHandler | |
trustStoreFile (security) | 用于加密的服务器端证书密钥存储。 | File | |
trustStoreResource (security) | 用于加密的服务器端证书密钥存储。默认情况下从 classpath 加载,但您可以使用 classpath:、file: 或 http: 前缀来加载来自不同系统的资源。 | 字符串 | |
useGlobalSslContextParameters (security) | 启用使用全局 SSL 上下文参数。 | false | 布尔值 |