我第一次与Apache Camel合作,我真的很喜欢它。
我的问题是,我想打一条存在于其他捆绑物中的路线。我想知道这到底是怎么可能的。
我已经(通过我的服务)调用了到达骆驼路线的调用。在该路由内,呼叫一个URL。 URL是另一种类似于.. direct://
的路由我得到以下信息:
org.apache.camel.component.direct.DirectConsumerNotAvailableException: No consumers available on endpoint: direct://
我正在做这样的事情:
<bean id="myBeanID" class="ClassWhereRouteIsDefined"/>
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route>
<from uri="direct://fromURL" />
<to uri="direct://toURL" />
</route>
</camelContext>
有没有办法做到这一点?
答案 0 :(得分:3)
有两种方法可以执行此操作。我要列出几对,将不可能列出您可以执行此操作的所有方式。
direct-vm组件提供对 同步 的直接调用 JVM实例中的所有使用者。此端点可用于连接 骆驼上下文 中的现有路线,以及 other 同一JVM中的骆驼上下文 。
vm组件提供 异步 JVM实例中的所有使用者。与seda组件类似,区别在于可以 在骆驼上下文之间进行通信 。但是,像上面一样,它们必须全部在 同一JVM 中。
因此,如果捆绑包都在同一jvm上运行,则可以使用direct-vm,并且可以使用vm组件。
要处理在不同VM上运行的捆绑软件,您可以使用多个组件,例如以下列表:
服务器间束通信的主要思想是,您可以创建束以监听协议,并将交换和报头转换为该协议,然后继续操作。