VM 传输参考

使用 ActiveMQ Classic > 配置传输 > ActiveMQ Classic 连接 URI > VM 传输参考

VM 传输

VM 传输允许客户端在 VM 内部互相连接,而无需网络通信开销。使用的连接不是套接字连接,而是使用直接方法调用,这使得嵌入式消息系统具有高性能。

第一个使用 VM 连接的客户端将启动一个嵌入式代理。后续连接将连接到同一个代理。一旦所有到代理的 VM 连接都关闭,嵌入式代理将自动关闭。

简单代理配置语法

这是 VM 连接的正常语法。它很简单,但只提供了有限的嵌入式代理配置。

vm://brokerName?transportOptions

如果您想连接到已经实例化的嵌入式代理(例如,在 Apache ServiceMix 的情况下),请确保在 **vm://brokerName** url 中使用的 brokerName 与正在运行的代理的 brokerName 相匹配。

传输选项
选项名称 默认值 描述
marshal false 如果为 true,则强制通过传输发送的每个命令使用 WireFormat 进行编组和解组。
wireFormat default 要使用的 WireFormat 的名称
wireFormat.*   所有以该前缀开头的属性都用于配置 wireFormat。
create true 如果代理应该按需创建,如果它尚不存在。
waitForStart -1 如果 > 0,则表示等待代理启动的超时时间(以毫秒为单位)。值 -1 和 0 表示不等待。仅在 ActiveMQ Classic 5.2+ 中受支持。
broker.*   所有以该前缀开头的属性都用于配置代理。有关更多信息,请参见 配置线格式
示例 URI
vm://broker1?marshal=false&broker.persistent=false

小心嵌入式代理

如果您使用的是 VM 传输,并且希望显式配置 嵌入式代理,那么您可能会在代理启动之前创建 JMS 连接。目前 ActiveMQ Classic 会在您使用 VM 传输且没有配置代理的情况下自动创建代理。(在 5.2 中,可以使用 waitForStart 和 create=false 选项来配置连接 uri)

因此,为了解决这个问题,如果您使用的是 Spring,您可能希望使用 **depends-on** 属性,以便您的 JMS 连接工厂依赖于嵌入式代理,以避免这种情况发生。例如:

<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>

高级代理配置语法

这是 VM 连接的高级语法。它允许您使用 代理配置 URI 更广泛地配置代理。

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

或者

vm:broker:(tcp://127.0.0.1)?brokerOptions
传输选项
选项名称 默认值 描述
marshal false 如果为 true,则强制通过传输发送的每个命令使用 WireFormat 进行编组和解组。
wireFormat default 要使用的 WireFormat 的名称
wireFormat.*   所有以该前缀开头的属性都用于配置 wireFormat。

关于优化 VM 传输的使用,还有 更多选项

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

使用外部配置文件配置嵌入式代理

要使用 vm 传输启动嵌入式代理并使用外部配置文件(例如 activemq.xml)对其进行配置,请使用以下 URI

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

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛标志和 Apache ActiveMQ 项目标志是 Apache 软件基金会的商标。版权所有 © 2024,Apache 软件基金会。根据 Apache 许可证 2.0 许可。