附录 A. acceptor 和 Connector 配置参数
下表详细介绍了用于配置 Netty 网络连接的一些可用参数。参数及其值附加到连接字符串的 URI 中。如需更多信息 ,请参阅在网络连接中配置接受器和连接器。每个表根据名称列出参数,以及是否可以与接受者或连接器一起使用的备注。您可以使用一些参数,例如,只能使用 acceptors。
所有 Netty 参数都在类 org.apache.activemq.artemis.core.remoting.impl.netty.TransportConstants
中定义。源代码可用于下载 客户门户网站。
参数 | 使用… | 描述 |
---|---|---|
batchDelay | 两者 |
在将数据包写入 acceptor 或 connector 之前,可以将代理配置为批处理写入,最多 |
connectionsAllowed | acceptors |
限制接受者允许的连接数。当达到这个限制时,会向日志发出 DEBUG 级别的信息,并拒绝连接。正在使用的客户端类型决定了连接被拒绝时会发生什么。默认值为 |
directDeliver | 两者 |
当消息到达服务器并发送到等待消费者时,交付默认会在与消息到达的同一线程上执行。这在带有相对小消息和少量消费者的环境中提供了良好的延迟,但会牺牲总体吞吐量和可扩展性的成本 - 特别是在多站点机器上。如果您希望延迟最低,吞吐量可能会降低,那么您可以使用 |
handshake-timeout | acceptors | 防止未授权的客户端打开大量连接并使其打开。由于每个连接都需要一个文件句柄,所以它消耗了其他客户端不可用的资源。 这个超时限制连接在不验证的情况下消耗资源的时间。验证连接后,您可以使用资源限值设置来限制资源消耗。
默认值为 编辑超时值后,您必须重启代理。 |
localAddress | 连接器 | 指定客户端在连接到远程地址时使用的本地地址。这通常用于应用服务器或运行 Embeded 来控制哪个地址用于出站连接。如果没有设置本地地址,则连接器将使用任何可用的本地地址。 |
localPort | 连接器 | 指定客户端在连接到远程地址时使用的本地端口。这通常用于应用服务器或运行 Embeded 来控制哪个端口用于出站连接。如果使用默认值(即 0),则连接器将让系统获取临时端口。有效端口为 0 到 65535 |
nioRemotingThreads | 两者 |
当配置为使用 NIO 时,代理默认使用与 |
tcpNoDelay | 两者 |
如果为 |
tcpReceiveBufferSize | 两者 |
决定 TCP 接收缓冲区的大小(以字节为单位)。默认值为 |
tcpSendBufferSize | 两者 |
决定 TCP 发送缓冲区的大小(以字节为单位)。默认值为 TCP 缓冲区大小应该根据您的网络的带宽和延迟调整。 在概述 TCP 发送/接收缓冲区大小中,应计算为: buffer_size = bandwidth * RTT.
其中带宽是每秒的字节,网络往返时间(RTT)以秒为单位。可使用 对于快速网络,您可能希望从默认值中增加缓冲区大小。 |
参数 | 使用… | 描述 |
---|---|---|
httpClientIdleTime | acceptors | 在发送空 HTTP 请求前,客户端可以闲置的时长,以保持连接处于活动状态。 |
httpClientIdleScanPeriod | acceptors | 扫描空闲客户端的频率(以毫秒为单位)。 |
httpEnabled | acceptors | 不再需要。通过单一端口支持,代理会自动检测是否使用 HTTP 并配置其自身。 |
httpRequiresSessionId | 两者 |
如果为 |
httpResponseTime | acceptors | 在发送空 HTTP 响应前,服务器可以等待的时间,以保持连接处于活动状态。 |
httpServerScanPeriod | acceptors | 扫描需要响应的客户端的频率(以毫秒为单位)。 |
参数 | 使用… | 描述 |
---|---|---|
enabledCipherSuites | 两者 | 用于 SSL 通信的密码套件的逗号分隔列表。
指定客户端应用程序支持的最安全密码套件。如果您指定了代理和客户端通用的、以逗号分隔的密码套件列表,或者您没有指定任何密码套件、代理和客户端相互协商要使用的密码套件。如果您不知道要指定哪个密码套件,您可以首先与以 debug 模式运行的客户端建立 broker-client 连接,以验证代理和客户端通用的密码套件。然后,在代理上配置
可用的密码套件取决于代理和客户端使用的 TLS 协议版本。如果在升级代理后默认 TLS 协议版本有变化,您可能需要选择早期的 TLS 协议版本,以确保代理和客户端可以使用通用密码套件。如需更多信息,请参阅 |
enabledProtocols | 两者 | 用于 SSL 通信的 TLS 协议版本的逗号分隔列表。如果没有指定 TLS 协议版本,代理将使用 JVM 的默认版本。
如果代理使用 JVM 的默认 TLS 协议版本,且升级代理后该版本会改变,代理和客户端使用的 TLS 协议版本可能会不兼容。虽然建议您使用更新的 TLS 协议版本,但您可以在 |
forceSSLParameters | 连接器 |
控制是否使用连接器上的参数设置的任何 SSL 设置,而不是 JVM 系统属性(包括
有效值为 |
keyStorePassword | 两者 | 在接受者上使用时,这是服务器端密钥存储的密码。
在连接器上使用时,这是客户端密钥存储的密码。只有在您使用双向 SSL (即双向身份验证)时,这才与连接器相关。虽然可以在服务器上配置这个值,但它会被下载并使用。如果客户端需要使用与服务器上设置的不同密码,那么它可以使用自定义ary |
keyStorePath | 两者 | 在接受者上使用时,这是服务器上 SSL 密钥存储的路径,其中包含服务器的证书(无论是自签名还是由颁发机构签名)。
在连接器上使用时,这是包含客户端证书的客户端 SSL 密钥存储的路径。只有在您使用双向 SSL (即双向身份验证)时,这才与连接器相关。虽然此值在服务器上配置,但它会被下载并使用。如果客户端需要使用与服务器上设置的不同路径,那么它可以使用自定义ary |
keyStoreAlias | 两者 | 当在接受器上使用时,这是在客户端连接时,密钥存储中要存在的键的别名。在连接器中使用时,这是当客户端连接到时,密钥存储中要存在的键的别名。这只适用于使用双向 SSL (即 mutual 身份验证)的连接器。 |
needClientAuth | acceptors |
告知客户端连接到这个接受者,需要双向 SSL。有效值为 |
sslEnabled | 两者 |
必须为 |
trustManagerFactoryPlugin | 两者 |
定义实现
这是一个带有单一方法的简单接口,它会返回
您需要将任何指定的插件放在代理的 Java 类路径上。您可以使用 < |
trustStorePassword | 两者 | 在接受者上使用时,这是服务器端信任存储的密码。这只在使用双向 SSL (即双向身份验证)时与接受者相关。
在连接器上使用时,这是客户端信任存储的密码。虽然可以在服务器上配置这个值,但它会被下载并使用。如果客户端需要使用与服务器上设置的不同密码,那么它可以使用自定义ary |
sniHost | 两者 |
在接受者上使用时,
如果传入连接不包含
在连接器上使用时, |
sslProvider | 两者 |
用于在
如果设置为 如果要使用通过 OpenSSL 支持的特殊 ciphersuite-elliptic curve 组合,而不是通过 JDK 供应商,这个选项很有用。 |
trustStorePath | 两者 | 在接受器上使用时,这是服务器端 SSL 密钥存储的路径,其中包含服务器信任的所有客户端的密钥。这只在使用双向 SSL (即双向身份验证)时与接受者相关。
在连接器上使用时,这是客户端 SSL 密钥存储的路径,其中包含客户端信任的所有服务器的公钥。虽然可以在服务器上配置这个值,但它会被下载并使用。如果客户端需要使用与服务器上设置的不同路径,那么它可以使用自定义ary |
useDefaultSslContext | 连接器 |
允许连接器使用"默认"SSL 上下文(通过
如果此参数设为 |
verifyHost | 两者 | 在连接器中使用时,服务器 SSL 证书的 CN 或 Subject Alternative Name 值将与要连接的主机名进行比较,以验证它们是否匹配。这对单向和双向 SSL 都很有用。 在接受者上使用时,连接客户端的 SSL 证书的 CN 或 Subject Alternative Name 值会与其主机名进行比较,以验证它们是否匹配。这仅适用于双向 SSL。
有效值为 |
wantClientAuth | acceptors |
告知客户端连接到这个接受者,即请求双向 SSL,但不需要。有效值为
如果属性 |