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