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