設定線路格式

使用 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 檢查同時適用於用戶端和伺服器端。此設定在線路格式協商期間不會從伺服器傳輸到用戶端。這允許用戶端和伺服器獨立設定(通常僅用於測試)。

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛標誌和 Apache ActiveMQ 專案標誌是 The Apache Software Foundation 的商標。Copyright © 2024, The Apache Software Foundation. 依據 Apache License 2.0 授權。