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