集群发送器对象
目录
简介
通道发送器组件负责通过网络投递传出的集群消息。在默认实现 org.apache.catalina.tribes.transport.ReplicationTransmitter
中,发送器是一个相当空的壳,其逻辑不多,主要围绕一个相当复杂的 <Transport>
组件,该组件实现了实际的投递机制。
并发并行投递
在默认的 transport
实现 org.apache.catalina.tribes.transport.nio.PooledParallelSender
中,Apache Tribes 实现了我们称之为“并发并行投递”的功能。这意味着我们可以同时向多个目的地发送消息(并行),并同时向同一个目的地投递两条消息(并发)。将这两者结合起来,就有了“并发并行投递”。
这何时有用?我们能想到的最简单的例子是,当你的部分代码正在发送一个10MB的消息,比如一个war文件正在部署时,你需要推送一个小的10KB消息,比如一个会话正在复制,你不需要等待10MB消息完成,因为一个独立的线程会同时推送这个小消息的传输。目前还没有中断、暂停或优先级机制可用,但请稍后查看。
嵌套元素
嵌套元素 <Transport>
不是必需的,但建议使用,因为你可以在这里设置所有传出消息的套接字选项。请参见其下面的属性。
属性
通用发送器属性
属性 | 描述 |
---|---|
className | 必填,唯一可用的实现是 org.apache.catalina.tribes.transport.ReplicationTransmitter |
通用传输属性
属性 | 描述 |
---|---|
className | 发送器组件的实现。org.apache.catalina.tribes.transport.nio.PooledParallelSender 由 Tomcat 提供。 |
rxBufSize | 套接字上的接收缓冲区大小。默认值为 25188 字节。 |
txBufSize | 套接字上的发送缓冲区大小。默认值为 65536 字节。 |
udpRxBufSize | 数据报套接字上的接收缓冲区大小。默认值为 25188 字节。 |
udpTxBufSize | 数据报套接字上的发送缓冲区大小。默认值为 65536 字节。 |
directBuffer | 可能的值为 true 或 false 。如果你希望接收器在向套接字写入数据时使用直接字节缓冲区,请将其设置为 true。默认值为 false |
keepAliveCount | 在套接字关闭并为下一个请求重新打开之前,可以通过该套接字的请求数量。默认值为 -1 ,表示无限。 |
keepAliveTime | 连接打开后保持开放的毫秒数。默认值为 -1 ,表示无限。 |
timeout | 设置套接字的 SO_TIMEOUT 选项。该值以毫秒为单位,默认值为 3000 毫秒(3 秒)。此超时从消息发送尝试开始,直到传输完成。对于 NIO 套接字,这意味着调用者可以保证我们尝试发送消息的时间不会超过此超时值。对于阻塞 IO 实现,这直接转换为 soTimeout。超时不会触发重试尝试,以确保应用程序线程的返回。 |
maxRetryAttempts | 对于在套接字级别收到 IOException 的失败消息,我们重试的次数。默认值为 1 ,这意味着我们将重试一次失败的消息。换句话说,我们发送消息的尝试次数不会超过两次。一次是原始发送,另一次是 maxRetryAttempts 。 |
ooBInline | 套接字 OOBINLINE 选项的布尔值。可能的值为 true 或 false 。 |
soKeepAlive | 套接字 SO_KEEPALIVE 选项的布尔值。可能的值为 true 或 false 。 |
soLingerOn | 确定是否使用 SO_LINGER 套接字选项的布尔值。可能的值为 true 或 false 。默认值为 true 。 |
soLingerTime | 设置 SO_LINGER 套接字选项的时间值。该值以秒为单位。默认值为 3 秒。 |
soReuseAddress | 套接字 SO_REUSEADDR 选项的布尔值。可能的值为 true 或 false 。 |
soTrafficClass | 设置套接字的流量类别级别,该值在 0 到 255 之间。默认值为 int soTrafficClass = 0x04 | 0x08 | 0x010; 不同的值定义在 java.net.Socket#setTrafficClass(int) 中。 |
tcpNoDelay | 套接字 TCP_NODELAY 选项的布尔值。可能的值为 true 或 false 。默认值为 true |
throwOnFailedAck | 布尔值,默认值为 true 。如果设置为 true,当从远程成员收到负确认(negative ack)时,发送方将抛出 org.apache.catalina.tribes.RemoteProcessException 。如果设置为 false,Tribes 会将正确认(positive ack)和负确认同等对待,都表示消息已收到。 |
通用 PooledSender 属性
属性 | 描述 |
---|---|
poolSize | 从 A 到 B 的最大并发连接数。该值基于每个目的地的计数。默认值为 25 |
maxWait | 当没有可用发送器时,senderPool 将等待的最大毫秒数。默认值为 3000 毫秒(3 秒)。 |