20.2.2. 配置 Netty TCP
Netty TCP 是一个简单的、非加密的基于 TCP 套接字的传输协议。Netty TCP 可以使用旧的阻塞式 Java IO,也可以使用非阻塞式的 Java NIO。我们推荐在服务器端使用 Java NIO 以获得更好的扩充性来容纳很多并发连接。如果并发连接的数量较少,Java IO 可以获得比 NIO 更少的延迟。
我们不推荐在不信任的网络里运行 Netty TCP 连接,因为它是非加密的。使用 Netty TCP 时,所有的连接都是从客户端初始化的。
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
配置示例也展示了 HornetQ 的 JBoss EAP 6 实现在接收器和连接器配置里是如何使用套接字绑定的。这和 HornetQ 的独立版本不同,它要求声明专门的主机和端口。
例 20.1. Default EAP 配置里的 Netty TCP 配置示例
下表描述了 Netty TCP 配置属性:
Expand
属性 | 默认值 | 描述 |
---|---|---|
batch-delay | 0 毫秒 | 在将数据包写入到传输数据之前,HornetQ 可以在最大为 batch-delay 毫秒内批量处理写入操作。这通过增加消息传输的平均延迟,增加了很小型消息的总体吞吐量。 |
direct-deliver | true | 当消息到达服务器并被递送给等待的消费者时,在默认情况下,递送是在消息到达的相同线程里完成的。对于相对较小的消息和数量较少的消费者,这可以获得良好的延迟,但减少了吞吐量。对于更高的吞吐量,您可以将其设置为 “false”。 |
local-address | [local address available] | 对于 netty 连接器,它用来指定客户在连接远程地址时使用的本地地址。如果没有指定本地地址,那么连接器将使用任何可用的本地地址。 |
local-port | 0 | 对于 netty 连接器,它用来指定客户在连接远程地址时使用哪个本地端口。如果使用 local-port default(0),那么连接器将让系统选取一个临时端口,其有效值为 0 到 65535。 |
nio-remoting-threads | -1 | 如果使用 NIO,HornetQ 将默认使用三倍于核心(或 hyper-thread)数量(由 Runtime.getRuntime().availableProcessors() 确定)的线程来处理转入数据包。您可以设置自定义的值来覆盖这个值。 |
tcp-no-delay | true | 如果为 true,Nagle 算法将被启用。通过减少在网络上发送的数据包时距离,这个算法有助于提高 TCP/IP 网络的效率。 |
tcp-send-buffer-size | 32768 字节 | 这个参数确定了 TCP 发送缓冲的大小(字节) |
tcp-receive-buffer-size | 32768 字节 | 这个参数确定了 TCP 接收缓冲的大小(字节) |
use-nio | false | 如果为 true,Java 非阻塞式 NIO 将被使用。如果为 false,则使用旧的阻塞式 Java IO。如果您需要服务器处理许多并发连接,请使用非阻塞式 Java NIO,否则请使用阻塞式 Java IO。 |
注意
Netty TCP 属性对于所有类型的传输协议都是有效的(Netty SSL、Netty HTTP 和 Netty Servlet)。