TCP 传输参考

使用 ActiveMQ Classic > 配置传输 > ActiveMQ Classic 连接 URI > TCP 传输参考

TCP 传输

TCP 传输允许客户端使用 TCP 套接字连接到远程 ActiveMQ Classic 代理。这些配置选项可用于调整客户端使用 JMS 客户端的连接 URI 字符串或代理的传输连接器 URI 在客户端或代理的底层 TCP 传输。

注意:使用正确的前缀!

在代理的传输连接器定义中使用时,以下选项应以**transport.***为前缀。但是,在客户端,**transport.***前缀必须省略。

配置语法

tcp://hostname:port?key=value

示例

代理端(在**TransportConnector**中)

tcp://127.0.0.1:61616?transport.threadName&transport.trace=false&transport.soTimeout=60000

客户端(在**brokerURL**中)

tcp://127.0.0.1:61616?threadName&trace=false&soTimeout=60000

传输选项
选项名称 默认值 描述
backlog 5000 指定等待传输服务器套接字接受的最大连接数。
closeAsync true 如果为**true**,套接字关闭调用将异步发生。此参数应设置为**false**,用于 STOMP 等协议,这些协议通常用于每次读写都创建新连接的情况。这样做可以确保套接字关闭调用同步发生。同步关闭可以防止代理因连接快速循环而耗尽可用套接字。
connectionTimeout 30000 如果为**>=1**,则该值设置连接超时时间(以毫秒为单位)。值为**0**表示没有超时。负值将被忽略。
daemon false 如果为**true**,传输线程将在守护进程模式下运行。将此参数设置为**true**,将代理嵌入到 Spring 容器或 Web 容器中,以允许容器正确关闭。
dynamicManagement false 如果为**true**,则可以通过 JMX 管理**TransportLogger**。
ioBufferSize 8 * 1024 指定用于 TCP 层和 OpenWire 层之间的缓冲区大小,其中发生基于**wireFormat**的编组。
jmxPort 1099 (仅客户端)指定 JMX 服务器将用来管理**TransportLoggers**的端口。这应该只通过 URI 由客户端生产者或消费者设置,因为代理创建自己的 JMX 服务器。指定备用 JMX 端口对在同一台机器上测试代理和客户端并需要通过 JMX 控制两者的开发人员很有用。
keepAlive false 如果为**true**,则在代理连接上启用TCP KeepAlive,以防止连接在 TCP 级别超时。这不应与**KeepAliveInfo**消息混淆,如**InactivityMonitor**中使用的那样。
logWriterName default 设置要使用的**org.apache.activemq.transport.LogWriter**实现的名称。名称映射到**resources/META-INF/services/org/apache/activemq/transport/logwriters**目录中的类。
maximumConnections Integer.MAX_VALUE 此代理允许的最大套接字数。
minmumWireFormatVersion 0 将接受的最小远程**wireFormat**版本(注意拼写错误)。注意:当远程**wireFormat**版本低于配置的最小可接受版本时,将抛出异常,并且连接尝试将被拒绝。值为**0**表示不检查远程**wireFormat**版本。
socketBufferSize 64 * 1024 设置已接受套接字的读写缓冲区的大小(以字节为单位)。
soLinger Integer.MIN_VALUE 当值为**> -1**时,设置套接字的选项**soLinger**。当设置为**-1**时,**soLinger**套接字选项被禁用。
soTimeout 0 设置套接字的读超时时间(以毫秒为单位)。值为**0**表示没有超时。
soWriteTimeout 0 设置套接字的写超时时间(以毫秒为单位)。如果套接字写操作在指定超时时间之前没有完成,则套接字将被关闭。值为**0**表示没有超时。
stackSize 0 设置传输的后台读取线程的堆栈大小。必须以**128K**的倍数指定。值为**0**表示忽略此参数。
startLogging true 如果为**true**,则传输堆栈的**TransportLogger**对象将最初将消息写入日志。除非**trace=true**,否则忽略此参数。
tcpNoDelay false 如果为**true**,则设置套接字的选项**TCP_NODELAY**。这将为小数据包传输禁用 Nagle 算法。
threadName N/A 指定此参数时,在调用传输时会修改线程的名称。将附加远程地址,以便在调用卡在传输方法中时,线程名称中将包含目标信息。在使用线程转储进行调试时,这非常有用。
trace false 导致通过传输发送的所有命令都被记录。要查看记录的输出,请定义**Log4j**记录器:**log4j.logger.org.apache.activemq.transport.TransportLogger=DEBUG**。
trafficClass 0 要设置的套接字的流量类别。
diffServ 0 (仅客户端)首选的区分服务流量类别,用于设置传出数据包,如 RFC 2475 中所述。有效的整数值:**[0,64]**。有效的字符串值:**EF, AF[1-3][1-4]**或**CS[0-7]**。使用 JDK 6 时,仅在 JVM 使用 IPv4 堆栈时有效。要使用 IPv4 堆栈,请设置系统属性**java.net.preferIPv4Stack=true**。注意:同时指定“**diffServ**和**typeOfService**”是无效的,因为它们在 TCP/IP 数据包头中共享相同的位置
typeOfService 0 (仅客户端)首选的服务类型值,用于设置传出数据包。有效的整数值:**[0,256]**。使用 JDK 6 时,仅在 JVM 配置为使用 IPv4 堆栈时有效。要使用 IPv4 堆栈,请设置系统属性**java.net.preferIPv4Stack=true**。注意:同时指定“**diffServ**和**typeOfService**”是无效的,因为它们在 TCP/IP 数据包头中共享相同的位置。
useInactivityMonitor true 当为**false**时,**InactivityMonitor**被禁用,连接永远不会超时。
useKeepAlive true 当为**true KeepAliveInfo**时,消息将在空闲连接上发送,以防止其超时。如果此参数为**false**,连接在指定的时间内未收到数据,则仍会超时。
useLocalHost false 当为**true**时,本地连接将使用值**localhost**而不是实际的本地主机名进行。在某些操作系统(例如**OS X**)上,无法以本地主机名身份连接,因此**localhost**更好。
useQueueForAccept true 当为**true**时,已接受的套接字将被放入队列中,以使用单独的线程异步处理。
wireFormat default 要使用的**wireFormat**工厂的名称。
wireFormat.* N/A 具有此前缀的属性用于配置**wireFormat**。

有关更多信息,请参阅配置线格式

区分服务或服务类型

支持设置区分服务 - 如IETF RCF 2475中所述。为了配置代理,以便代理发出的所有数据包都与传入数据包上设置的 DSCP 值匹配 - 您需要应用 IP Tables 脚本 - 可在此处找到。

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛徽标和 Apache ActiveMQ 项目徽标是 Apache 软件基金会的商标。版权所有 © 2024,Apache 软件基金会。根据Apache 许可证 2.0获得许可。