附录 A. 接收器和连接器配置参数


下表详细介绍了用于配置 Netty 网络连接的一些可用参数。参数及其值附加到连接字符串的 URI。如需更多信息,请参阅在网络连接中配置接收器和连接器。每个表格按名称列出参数,并记录它们是否能与接收器或连接器一起使用。例如,您可以使用一些参数,例如仅与接收器一起使用。

注意

所有 Netty 参数在类 org.apache.activemq.artemis.core.remoting.impl.netty.TransportConstants 中定义。源代码可用于在 客户门户 上下载。

Expand
表 A.1. Netty TCP 参数
参数与…​Description

batchDelay

两者

在将数据包写入接收器或连接器之前,可以将代理配置为批量写入,最多可进行 batchDelay 毫秒。这可以提高非常小的消息的总吞吐量。它这样做会牺牲消息传输的平均延迟。默认值为 0 ms。

connectionsAllowed

接收器

限制接收器允许的连接数。达到此限制时,会向日志发出 DEBUG 级别消息,连接将被拒绝。使用中的客户端类型决定了在连接被拒绝时会发生什么。

directDeliver

两者

当消息到达服务器并传送到等待的消费者时,默认情况下,发送操作会在与邮件到达时相同的线程上执行。这在消息相对较少和数量较少、消费者数量较少、但代价是整体吞吐量和可扩展性(特别是在多核机器上)的环境中提供了很好的延迟。如果您想要最低延迟并尽可能降低吞吐量,则可以使用 directDeliver 的默认值 这是 true。如果您希望对延迟产生一些很小的额外影响,但希望将 directDeliver 的最高吞吐量设置为 false

handshake-timeout

接收器

防止未授权的客户端打开大量连接并保持开放。由于每个连接都需要一个文件句柄,它会消耗随后其他客户端不可用的资源。

此超时限制连接可在不通过身份验证的情况下消耗资源的时间。验证连接后,您可以使用资源限制设置来限制资源消耗。

默认值为 10 秒。您可以将其设置为任何其他整数值。您可以通过将其设置为 0 或负整数来关闭这个选项。

编辑超时值后,必须重启代理。

localAddress

连接器

指定在连接到远程地址时客户端将使用的本地地址。这通常用于应用服务器或运行 Embedded 来控制用于出站连接的地址。如果没有设置 local-address,连接器将使用任何可用的本地地址。

localPort

连接器

指定在连接到远程地址时客户端将使用的本地端口。这通常用于应用服务器或运行 Embedded 来控制用于出站连接的端口。如果使用默认值,即 0,则连接器将允许系统采用临时端口。有效端口为 0 到 65535

nioRemotingThreads

两者

当配置为使用 NIO 时,代理将默认使用等于 Runtime.getRuntime().availableProcessors()报告的内核数(或超线程) 的三倍线程。如果要覆盖这个值,可以通过指定这个参数来设置线程数量。此参数的默认值为 -1,这表示使用派生自 Runtime.getRuntime().availableProcessors()* 3 的值。

tcpNoDelay

两者

如果 情况如此Nagle 的算法 将被禁用。这是 Java(客户端)套接字选项。默认值为 true

tcpReceiveBufferSize

两者

以字节为单位确定 TCP 接收缓冲区的大小。默认值为 32768

tcpSendBufferSize

两者

以字节为单位确定 TCP 发送缓冲区的大小。默认值为 32768

TCP 缓冲区大小应该根据网络的带宽和延迟来调优。

在摘要中,TCP 发送/接收缓冲区大小计算为:

buffer_size = bandwidth * RTT.

其中带宽以每秒字节为单位,而网络往返时间(RTT)则以秒为单位。RTT 可使用 ping 实用程序轻松测量。

对于快速网络,您可能希望增加默认的缓冲区大小。

Expand
表 A.2. Netty HTTP 参数
参数与…​Description

httpClientIdleTime

接收器

在发送空 HTTP 请求以保持连接处于活动状态之前,客户端可以闲置多长时间。

httpClientIdleScanPeriod

接收器

空闲客户端扫描的频率(以毫秒为单位)。

httpEnabled

接收器

不再需要。使用单一端口支持时,代理现在将自动检测是否使用 HTTP 并配置其自身。

httpRequiresSessionId

两者

如果为 true,客户端将在第一次调用后等待接收会话 ID。HTTP 连接器连接到 servlet 接收器时使用。不建议使用此配置。

httpResponseTime

接收器

服务器在发送空 HTTP 响应前可以等待的时长,以保持连接处于活动状态。

httpServerScanPeriod

接收器

需要响应的客户端扫描的频率(以毫秒为单位)。

Expand
表 A.3. Netty TLS/SSL 参数
参数与…​Description

enabledCipherSuites

两者

用于 SSL 通信的密码套件的逗号分隔列表。默认值为空,表示将使用 JVM 的默认值。

enabledProtocols

两者

用于 SSL 通信的协议的逗号分隔列表。默认值为空,表示将使用 JVM 的默认值。

forceSSLParameters

连接器

控制是否使用作为连接器上参数设置的 SSL 设置,而非 JVM 系统属性(包括 javax.net.ssl 和 AMQ Broker 系统属性),以为此连接器配置 SSL 上下文。

有效值为 true 或者 false。默认值为 false

keyStorePassword

两者

在接收器上使用时,这是服务器端密钥存储的密码。

在连接器上使用时,这是客户端密钥存储的密码。只有当您使用双向 SSL(即相互身份验证)时,这才与连接器相关。虽然可以在服务器上配置此值,但它会被客户端下载和使用。如果客户端需要使用与服务器上设置的不同密码不同的密码,那么它可以使用规范的 javax.net.ssl.keyStorePassword 系统属性或 ActiveMQ 特定的 org.apache.activemq.ssl.keyStorePassword 系统属性覆盖服务器端设置。如果客户端上的另一个组件已在使用标准的 Java 系统属性,ActiveMQ 相关的系统属性很有用。

keyStorePath

两者

在接收器上使用时,这是存储服务器证书(无论是自签名还是由颁发机构签名)的服务器上的 SSL 密钥存储路径。

在连接器中使用时,这是到存放客户端证书的客户端 SSL 密钥存储的路径。只有当您使用双向 SSL(即相互身份验证)时,这才与连接器相关。虽然此值在服务器上配置,但它会被客户端下载和使用。如果客户端需要使用与服务器上设置的不同路径不同的路径,那么它可以使用规范的 javax.net.ssl.keyStore 系统属性或 ActiveMQ 特定的 org.apache.activemq.ssl.keyStore 系统属性来覆盖服务器端设置。如果客户端上的另一个组件已在使用标准的 Java 系统属性,ActiveMQ 相关的系统属性很有用。

needClientAuth

接收器

告知客户端连接到此接收器的客户端需要双向 SSL。有效值为 true 或者 false。默认值为 false

sslEnabled

两者

必须为 true 才能启用 SSL。默认值为 false

trustManagerFactoryPlugin

两者

定义实施 org.apache.activemq.artemis.api.core.TrustManagerFactoryPlugin 的类的名称。

这是一个简单接口,它通过一个返回 javax.net.ssl.TrustManagerFactory 的方法。当初始化底层的 javax.net.ssl.SSLContext 时,会使用 TrustManagerFactory。这允许精细地自定义谁或什么代理和客户端信任。

trustManagerFactoryPlugin 的值优先于适用于信任管理器的所有其他 SSL 参数(即 trustAll、trustedstoreProvider、trusted storePath、trustedstorePasswordcrlPath)。

您需要将任何指定的插件放在代理的 Java 类路径中。您可以使用 <broker_instance_dir>/lib 目录,因为它默认是类路径的一部分。

trustStorePassword

两者

在接收器上使用时,这是服务器端信任存储的密码。只有在您使用双向 SSL(即相互身份验证)时,这才与接收器相关。

在连接器上使用时,这是客户端信任存储的密码。虽然可以在服务器上配置此值,但它会被客户端下载和使用。如果客户端需要使用与服务器上设置的不同密码不同的密码,那么它可以使用规范的 javax.net.ssl.trustStorePassword 系统属性或 ActiveMQ 特定的 org.apache.activemq.ssl.trustStorePassword 系统属性覆盖服务器端设置。如果客户端上的另一个组件已在使用标准的 Java 系统属性,ActiveMQ 相关的系统属性很有用。

sniHost

两者

在接收器上使用 时,sniHost 是一个用于匹配传入 SSL 连接中的 server_name 扩展的正则表达式(有关此扩展的更多信息,请参阅 https://tools.ietf.org/html/rfc6066)。如果名称不匹配,则拒绝与接收器的连接。如果发生这种情况,则会记录 WARN 消息。

如果传入连接不包含 server_name 扩展名,则接受连接。

在连接器上使用时,sniHost 值用于 SSL 连接上的 server_name 扩展。

sslProvider

两者

用于在 JDK 和 OPENSSL 之间更改 SSL 提供程序.默认值为 JDK

如果设置为 OPENSSL,您可以在类路径中添加 netty-tcnative,以使用原生安装的 OpenSSL。

如果要使用受 OpenSSL 支持但不通过 JDK 供应商支持的特殊密码库-elliptic curve 组合,这个选项很有用。

trustStorePath

两者

在接收器上使用时,这是服务器端 SSL 密钥存储的路径,该密钥存储存放服务器信任的所有客户端的密钥。只有在您使用双向 SSL(即相互身份验证)时,这才与接收器相关。

在连接器中使用时,这是客户端 SSL 密钥存储的路径,该密钥存储存放客户端信任的所有服务器的公钥。虽然可以在服务器上配置此值,但它会被客户端下载和使用。如果客户端需要使用与服务器上设置的不同路径不同的路径,那么它可以使用规范的 javax.net.ssl.trustStore 系统属性或 ActiveMQ 特定的 org.apache.activemq.ssl.trustStore 系统属性来覆盖服务器端设置。如果客户端上的另一个组件已在使用标准的 Java 系统属性,ActiveMQ 相关的系统属性很有用。

useDefaultSslContext

连接器

允许连接器使用"默认"SSL 上下文(通过 SSLContext.getDefault()),该上下文可以通过客户端以编程方式设置(通过 SSLContext.setDefault(SSLContext))。

如果此参数设为 true,则 忽略除 for sslEnabled 以外的所有其他 SSL 相关参数。有效值为 true 或者 false。默认值为 false

verifyHost

两者

在连接器中使用时,会将服务器的 SSL 证书的 CN 或 Subject 备用名称值与正在连接到的主机名进行比较,以验证它们是否匹配。这对单向和双向 SSL 很有用。

在接收器上使用时,将连接客户端 SSL 证书的 CN 或主题备用名称值与其主机名进行比较,以验证它们是否匹配。这仅适用于双向 SSL。

有效值为 true 或者 false。连接器的默认值为 true,接收器的默认值为 false

wantClientAuth

接收器

告知客户端连接此接收器的客户端请求双向 SSL,但不强制要求。有效值为 true 或者 false。默认值为 false

如果属性 requireClientAuth 设为 true,则该属性具有优先权,并且希望ClientAuth 被忽略。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部