Apache Camel:"直接:开始"端点 - 这是什么意思?

Sou*_*nta 47 apache apache-camel endpoint

我是Apache Camel的新手.有人可以解释一下"直接:开始"在骆驼中的含义.请参阅

http://camel.apache.org/http

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.

  • 谢谢.它仍然不清楚.让我更具体一点."start"是否具有特殊含义,或者它可以是任意字符串"foo"或"somethingelse"?第二 - 在上面发布的HTTP示例的上下文中,它是什么意思?再次感谢. (2认同)

小智 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)


Arm*_*yan 7

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上下文中起作用。