配置线格式
使用 ActiveMQ Classic > 配置传输 > ActiveMQ Classic 连接 URI > 配置线格式
OpenWire 线格式
OpenWire 是 ActiveMQ Classic 使用的默认线格式。 它为高速消息传递提供了一种高效的二进制格式。 OpenWire 选项可以在 JMS 客户端的连接 URI 或代理的传输绑定 URI 上配置。
选项 | 默认 | 描述 |
---|---|---|
cacheEnabled |
true |
是否应缓存常用重复值,以便减少编组操作? |
cacheSize |
1024 |
当 cacheEnabled=true 时,此参数用于指定要缓存的值数量。 |
maxInactivityDuration |
30000 |
最大 空闲 时间(在该时间之前套接字被认为已断开)以毫秒为单位。 在某些平台上,套接字可能需要很长时间才能断开连接。 因此,允许代理在连接处于空闲状态配置的时间段后终止连接。 由某些传输使用以启用保持活动心跳功能。 当设置为小于等于 0 的值时,空闲监控将被禁用。 |
maxInactivityDurationInitalDelay |
10000 |
开始 空闲 检查之前的初始延迟。 是的,单词 'Inital' 应该像那样拼错。 |
maxFrameSize |
MAX_LONG |
允许的最大帧大小。 可以帮助防止 OOM DOS 攻击。 |
maxFrameSizeEnabled |
true |
是否应验证 maxFrameSize 检查? (自:v5.16.4) |
sizePrefixDisabled |
false |
在每个数据包编组之前,是否应在每个数据包之前加上数据包的大小? |
stackTraceEnabled |
true |
是否应将代理上发生的异常的堆栈跟踪发送到客户端? |
tcpNoDelayEnabled |
true |
不影响线格式,但提供了一个提示给对等方,表明 TCP_NODELAY 应该在通信套接字上启用。 |
tightEncodingEnabled |
true |
是否应将线尺寸优化到 CPU 使用率? |
使用正确的词缀!
线格式选项必须具有前缀
wireFormat.
才能生效,例如wireFormat.maxInactivityDuration=10000
。 缺少此前缀的选项将被忽略。
示例配置
Java
ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616?wireFormat.cacheEnabled=false&wireFormat.tightEncodingEnabled=false");
Spring
<bean class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="failover:(tcp://127.0.0.1:61616?jms.optimizeAcknowledge=false&wireFormat.maxInactivityDuration=30000)"/>
<!-- other options... -->
</bean>
最大帧大小
maxFrameSizeEnabled 检查适用于客户端和服务器端。 此设置不会在线格式协商期间从服务器传输到客户端。 这允许客户端和服务器独立配置(通常仅用于测试)。