Sou*_*nta 47 apache apache-camel endpoint
我是Apache Camel的新手.有人可以解释一下"直接:开始"在骆驼中的含义.请参阅
from("direct:start")
.to("http://myhost/mypath");
Run Code Online (Sandbox Code Playgroud)
谢谢.
gre*_*ker 54
上面的"direct:start"只是说路由以名为"start" 的Direct Component开头.
直接端点提供路由的同步调用.如果要发送Exchange
到direct:start端点,您将创建一个ProducerTemplate
并使用各种send方法.
ProducerTemplate template = context.createProducerTemplate();
template.sendBody("direct:start", "This is a test message");
Run Code Online (Sandbox Code Playgroud)
名字没什么特别之处start
.它只是您在引用端点时要使用的名称,并且可以很容易地使用direct:foo
.
小智 9
假设直接路由作为名称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>
Run Code Online (Sandbox Code Playgroud)
Apache Camel direct基本上是用于在SAME Camel上下文中将Exchange从一条路由发送到另一条路由。因此,假设您正在从AMQ接收消息,并且想要为收到的每条消息填充标题,然后将其发送到邮件收件人列表。所以在这里您需要创建具有以下说明的新路由器
from(“direct:populateHeaders”)
.setHeader(“myHeader”, “myHeaderValue”)
.end()
Run Code Online (Sandbox Code Playgroud)
从任何路由,您可以通过以下方式将Exchange对象发送到该路由:
...
.to(“direct:populateHeaders”)
...
Run Code Online (Sandbox Code Playgroud)
重要的是要记住,这不会在您的Camel上下文中起作用。