2012-03-09 2 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-on-once-once – vikingsteve

답변

40

위의 "direct : start"는 간단히 경로가 "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 예제의 컨텍스트에서 무엇을 의미합니까? 다시 한번 감사드립니다. –

+0

특별한 의미는 없습니다. 엔드 포인트를 지칭하기 위해 사용할 이름입니다. 그것은 쉽게 "직접적 : foo"일 수 있습니다. – gregwhitaker

+0

Camel 사이트의 [Direct to] 링크 (http://camel.apache.org/direct.html)는 –

2

direct : start는 2 개의 끝점 사이의 통신을위한 동기식 방법을 제공하며 일반 파일이나 xml 메시지가 아닌 낙타 메시지를 사용하여 통신하려는 경우에만 사용되었습니다.

3

이름이 start 인 메소드로 직접 route를 가정하므로 특정 조작을 수행하기 위해 start 메소드/direct route를 호출해야합니다. 아래 예제가 도움이 될 것입니다.

입력 파일을 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

아파치 낙타 직접 SAME 낙타 컨텍스트에서 다른 하나 개의 경로에서 Exchange를 보내기 위해 기본적으로. 그래서 AMQ에서 메시지를 받고,받은 모든 메시지에 대해 헤더를 채운 다음 메일 수신자 목록으로 보내려고한다고 가정 해 봅시다. 그래서 여기 당신은 설명

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

다음 것이며 경로에서이 것 것을 염두에두고

... 

.to(“direct:populateHeaders”) 

... 

그것의 중요한

를 작성하여이 경로로 교환 개체를 보낼 수있는 새로운 라우터를 만들 필요가 당신의 낙타 문맥에서 벗어나지 마라.