2012-03-09 81 views
36

我是Apache Camel的新手。有人可以解释骆驼的“直接:开始”是什么意思。 请参阅Apache Camel:“direct:start”端点 - 意味着什么?

http://camel.apache.org/http

from("direct:start") 
.to("http://myhost/mypath"); 

感谢。

+0

请注意,如果您正在寻找一条路线,当骆驼启动时,“直接:启动”不是你正在寻找 - 更多信息:http://stackoverflow.com/questions/7714211/apache -camel-triggering-a-task-on-startup-to-run-only-once – vikingsteve 2013-11-26 08:55:08

回答

40

上面的“直接:启动”仅仅是说路线从名为“start”的Direct Component开始。

直接端点提供路由的同步调用。如果您想将Exchange发送到direct:start端点,您将创建一个ProducerTemplate并使用各种发送方法。

ProducerTemplate template = context.createProducerTemplate(); 

template.sendBody("direct:start", "This is a test message"); 

没有什么特别的名字start。这只是您在提到端点时要使用的名称,并且可能很容易就是direct:foo

+1

谢谢。这仍然不清楚。让我更具体一些。 “开始”具有特殊意义还是可以是任意字符串“foo”或“somethingelse”?其次 - 我在上面发布的HTTP示例的上下文中是什么意思?再次感谢。 – 2012-03-09 16:05:33

+0

没有特别的含义。这只是您要用来指代端点的名称。它可能很容易就是“直接:富”。 – gregwhitaker 2012-03-09 16:07:04

+0

以下是骆驼网站上的[直接链接](http://camel.apache.org/direct.html) – 2012-07-31 21:28:42

2

direct:start提供了两个端点之间进行通信的同步方式,只有在您想使用骆驼消息而不是通用文件或xml消息进行通信时才会使用。

3

假设像直接路由作为名称start的方法,所以我们需要调用start方法/直接路由来执行某些操作。下面的例子会有所帮助。

当输入文件在XXXX位置可用并且到达线路时,第一条路线将被触发,实际流程将转到第二条路线。基本上,来自端点的直接路由将由某个生产者端点触发。

<route id="fileRoute"> 
    <from uri="file:XXXX"> 
     .. 
    <to uri="direct:start"> 
</route> 

<route id="directStartRoute"> 
    <from uri="direct:start"> 
    <to uri="http://myhost/mypath"> 
</route> 
3

Apache的骆驼直接的基本上是同一背景下的骆驼从一个路由发送的Exchange到另一个。假设您从AMQ收到消息,并且想要为每封邮件填充标题,然后将其发送到邮件收件人列表。所以,在这里,你需要创建新的路由器,它具有如下描述

from(“direct:populateHeaders”) 
.setHeader(“myHeader”, “myHeaderValue”) 
.end() 

,并从任何途径可以通过编写

... 

.to(“direct:populateHeaders”) 

... 

它重要的是要记住,这将发送您的Exchange对象这条路线不适合你的骆驼上下文。