2012-03-09 144 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對象這條路線不適合你的駱駝上下文。