群集发送器对象

目录

简介

频道发送器组件负责通过网络传递传出的群集消息。在默认实现 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 可能的值为 truefalse。如果希望接收方在向套接字写入数据时使用直接字节缓冲区,则设置为 true。默认值为 false
keepAliveCount 在关闭套接字并为下一个请求重新打开套接字之前,可以通过套接字的请求数。默认值为 -1,表示无限制。
keepAliveTime 连接打开后保持打开状态的毫秒数。默认值为 -1,表示无限制。
timeout 在套接字上设置 SO_TIMEOUT 选项。该值以毫秒为单位,默认值为 3000 毫秒(3 秒)。此超时从开始尝试发送消息时开始,直到传输完成。对于 NIO 套接字,这意味着调用方可以保证我们不会尝试发送消息超过此超时值。对于阻塞 IO 实现,这直接转换为 soTimeout。
为了保证应用程序线程的返回,超时不会产生重试尝试。
maxRetryAttempts 在套接字级别收到 IOException 时,我们重试失败消息的次数。默认值为 1,这意味着我们将重试一次失败的消息。换句话说,我们将尝试发送消息不超过两次。一个是原始发送,一个是 maxRetryAttempts
ooBInline 套接字 OOBINLINE 选项的布尔值。可能的值为 truefalse
soKeepAlive 套接字 SO_KEEPALIVE 选项的布尔值。可能的值为 truefalse
soLingerOn 布尔值,用于确定是否使用 SO_LINGER 套接字选项。可能的值为 truefalse。默认值为 true
soLingerTime 设置 SO_LINGER 套接字选项时间值。该值为秒。默认值为 3 秒。
soReuseAddress 套接字 SO_REUSEADDR 选项的布尔值。可能的值为 truefalse
soTrafficClass 设置套接字的流量等级,该值介于 0 和 255 之间。默认值为 int soTrafficClass = 0x04 | 0x08 | 0x010; java.net.Socket#setTrafficClass(int) 中定义了不同的值。
tcpNoDelay 套接字 TCP_NODELAY 选项的布尔值。可能的值为 truefalse。默认值为 true
throwOnFailedAck 布尔值,默认值为 true。如果设置为 true,当我们从远程成员收到否定确认时,发送方将抛出 org.apache.catalina.tribes.RemoteProcessException。设置为 false,Tribes 将以与否定确认相同的方式处理肯定确认,即消息已收到。

常见 PooledSender 属性

属性 说明
poolSize 从 A 到 B 的最大并发连接数。该值基于每个目标计数。默认值为 25
maxWait 当没有可用发送方时,senderPool 将等待的最大毫秒数。默认值为 3000 毫秒。(3 秒)。