第 364 章 虚拟机组件

可作为 Camel 版本 1.1 提供

vm: 组件提供异步 SEDA 行为,在 BlockingQueue 上交换消息,并在单独的线程池中调用消费者。

此组件与 Seda 组件不同,因为虚拟机支持 CamelContext 实例间的通信 - 因此,您可以使用此机制在 web 应用程序间通信(提供 camel-core.jar 是在 系统/引导 类路径上)。

虚拟机是 Seda 组件的扩展。

364.1. URI 格式

vm:queueName[?options]

其中 queueName 可以是任何字符串,以在 JVM 中唯一标识端点(或者至少在加载 camel-core.jar 的类加载器中)

您可以使用以下格式将查询选项附加到 URI: ?option=value&option=value&…​

必须与制作者和消费者端点 URI 使用完全相同的 虚拟机 端点 URI。否则,Camel 会创建第二个 虚拟机 端点,尽管 URI 的 queueName 部分是相同的。例如:

from("direct:foo").to("vm:bar?concurrentConsumers=5");

from("vm:bar?concurrentConsumers=5").to("file://output");

请注意,我们必须使用完整的 URI,包括生产者和消费者中的选项。

在 Camel 2.4 中这个问题已被解决,因此只有队列名称必须匹配。使用队列名称 bar,您可以按照如下所示重写前面的 exmple:

from("direct:foo").to("vm:bar");

from("vm:bar?concurrentConsumers=5").to("file://output");