設定線路格式
使用 ActiveMQ Classic > 設定傳輸 > ActiveMQ Classic 連接 URI > 設定線路格式
OpenWire 線路格式
OpenWire 是 ActiveMQ Classic 使用的預設線路格式。它為高速訊息傳遞提供了高效的二進位格式。OpenWire 選項可以在 JMS 用戶端的連接 URI 或 Broker 的傳輸綁定 URI 上設定。
選項 | 預設值 | 描述 |
---|---|---|
cacheEnabled |
true |
是否應該快取常用的重複值,以減少封送處理的次數? |
cacheSize |
1024 |
當 cacheEnabled=true 時,此參數用於指定要快取的值的數量。 |
maxInactivityDuration |
30000 |
最大非活動持續時間(在此時間後,socket 會被視為已失效),以毫秒為單位。在某些平台上,socket 可能需要很長時間才能失效。因此,允許 Broker 在連接閒置超過設定的時間後終止連線。某些傳輸會使用此參數來啟用保持連線的心跳功能。當設定值 <= 0 時,會停用非活動監控。 |
maxInactivityDurationInitalDelay |
10000 |
開始非活動檢查之前的初始延遲。是的,單字 'Inital' 應該就是這樣拼錯的。 |
maxFrameSize |
MAX_LONG |
允許的最大框架大小。有助於防止 OOM DOS 攻擊。 |
maxFrameSizeEnabled |
true |
是否應該驗證 maxFrameSize 檢查?(自:v5.16.4) |
sizePrefixDisabled |
false |
是否應該在每個封包封送處理之前加上封包大小的前綴? |
stackTraceEnabled |
true |
是否應該將 Broker 上發生的例外狀況的堆疊追蹤傳送到用戶端? |
tcpNoDelayEnabled |
true |
不影響線路格式,但會向對等端提供提示,應該在通訊 Socket 上啟用 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 檢查同時適用於用戶端和伺服器端。此設定在線路格式協商期間不會從伺服器傳輸到用戶端。這允許用戶端和伺服器獨立設定(通常僅用於測試)。