群集发送器对象
目录
简介
频道发送器组件负责通过网络传递传出的群集消息。在默认实现 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 |
发送方组件的实现。Tomcat 提供了 org.apache.catalina.tribes.transport.nio.PooledParallelSender 。
|
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,当我们从远程成员收到否定确认时,发送方将抛出 org.apache.catalina.tribes.RemoteProcessException 。设置为 false,Tribes 将以与否定确认相同的方式处理肯定确认,即消息已收到。
|
常见 PooledSender 属性
属性 | 说明 |
---|---|
poolSize |
从 A 到 B 的最大并发连接数。该值基于每个目标计数。默认值为 25
|
maxWait |
当没有可用发送方时,senderPool 将等待的最大毫秒数。默认值为 3000 毫秒。(3 秒)。
|