第 365 章 VM 组件
从 Camel 版本 1.1 开始提供
vm: 组件提供异步 SEDA 行为,在 BlockingQueue 上交换消息,并在单独的线程池中调用消费者。
这个组件与虚拟机中的 Seda 组件不同,它支持 CamelContext 实例之间的通信,因此您可以使用此机制在 web 应用程序间进行通信(由 camel-core.jar
在 system/boot
类路径上提供)。
VM 是 Seda 组件的扩展。
365.1. URI 格式
vm:queueName[?options]
其中 queueName
可以是任意字符串,用于在 JVM 中唯一地标识端点(或者在加载 camel-core.jar 的类加载器中至少)
您可以将查询选项附加到 URI 中,格式为: ?option=value&option=value&…
必须在 生成者和消费者端点中使用完全相同的 VM 端点 URI。否则,Camel 将创建一个第二个 虚拟机 端点,尽管 URI 的 queueName
部分相同。例如:
from("direct:foo").to("vm:bar?concurrentConsumers=5"); from("vm:bar?concurrentConsumers=5").to("file://output");
请注意,我们必须使用完整的 URI,包括生产者和消费者中的选项。
在 Camel 2.4 中,这个问题已被解决,只有队列名称必须匹配。使用队列名称 栏
,我们可以重写前面的 exmple,如下所示:
from("direct:foo").to("vm:bar"); from("vm:bar?concurrentConsumers=5").to("file://output");