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