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 脚本 - 可在此处找到。