VM 傳輸參考

使用 ActiveMQ Classic > 設定傳輸 > ActiveMQ Classic 連線 URI > VM 傳輸參考

VM 傳輸

VM 傳輸允許客戶端在虛擬機器內部彼此連線,而無需網路通訊的額外負擔。使用的連線不是 Socket 連線,而是直接的方法調用,這使得高效能的嵌入式訊息系統得以實現。

第一個使用 VM 連線的客戶端將啟動一個嵌入式 Broker。後續的連線將附加到同一個 Broker。一旦所有與 Broker 的 VM 連線都已關閉,嵌入式 Broker 將自動關閉。

簡單 Broker 設定語法

這是 VM 連線的正常語法。它很簡單,但僅提供有限的嵌入式 Broker 設定。

vm://brokerName?transportOptions

如果您想連線到已實例化的嵌入式 Broker(例如 Apache ServiceMix 的情況),請確保 vm://brokerName URL 中使用的 brokerName 與正在執行的 Broker 的 brokerName 相符。

傳輸選項
選項名稱 預設值 描述
marshal false 如果為 true,則強制透過傳輸傳送的每個命令使用 WireFormat 進行封送處理和解封送處理。
wireFormat 預設 要使用的 WireFormat 名稱
wireFormat.*   所有帶有此前綴的屬性都用於設定 WireFormat
create true 如果 Broker 應在不存在時按需建立。
waitForStart -1 如果 > 0,表示等待 Broker 啟動的逾時時間(以毫秒為單位)。值 -1 和 0 表示不等待。僅在 ActiveMQ Classic 5.2+ 中支援。
broker.*   所有帶有此前綴的屬性都用於設定 Broker。請參閱設定 Wire Format 以取得更多資訊
URI 範例
vm://broker1?marshal=false&broker.persistent=false

請小心嵌入式 Broker

如果您正在使用 VM 傳輸並希望明確設定嵌入式 Broker,則有可能在 Broker 啟動之前先建立 JMS 連線。目前,如果您使用 VM 傳輸且沒有已設定的 Broker,ActiveMQ Classic 將自動建立一個 Broker。(在 5.2 中,可以對連線 URI 使用 waitForStart 和 create=false 選項)

因此,如果您正在使用 Spring,為了避免這種情況發生,您可能希望使用 depends-on 屬性,使您的 JMS ConnectionFactory 依賴於嵌入式 Broker。例如:

<bean id="broker" class="org.apache.activemq.xbean.BrokerFactoryBean">
    <property name="config" value="classpath:org/apache/activemq/xbean/activemq.xml" />
    <property name="start" value="true" />
  </bean>

  <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory" depends-on="broker">
    <property name="brokerURL" value="vm://127.0.0.1"/>
  </bean>

進階 Broker 設定語法

這是 VM 連線的進階語法。它允許您使用Broker 設定 URI更廣泛地設定 Broker。

vm:(broker:(tcp://127.0.0.1)?brokerOptions)?transportOptions

vm:broker:(tcp://127.0.0.1)?brokerOptions
傳輸選項
選項名稱 預設值 描述
marshal false 如果為 true,則強制透過傳輸傳送的每個命令使用 WireFormat 進行封送處理和解封送處理。
wireFormat 預設 要使用的 WireFormat 名稱
wireFormat.*   所有帶有此前綴的屬性都用於設定 WireFormat

關於最佳化 VM 傳輸的使用,還有更多選項

URI 範例
vm:(broker:(tcp://127.0.0.1:6000)?persistent=false)?marshal=false

使用外部設定檔設定嵌入式 Broker

 若要使用 VM 傳輸啟動嵌入式 Broker,並使用外部設定檔 (即 activemq.xml) 設定它,請使用以下 URI

vm://127.0.0.1?brokerConfig=xbean:activemq.xml 

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛標誌和 Apache ActiveMQ 專案標誌是 Apache 軟體基金會的商標。 版權所有 © 2024,Apache 軟體基金會。 依Apache License 2.0授權。