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