是否可以在自定义组件中使用骆驼组件?

时间:2020-04-24 09:51:55

标签: java apache-camel

我最近开始使用Apache Camel,我们正在研究创建自定义组件来抽象很多逻辑并简化路由,但是其中一些逻辑涉及http请求以及我们想要利用的现有骆驼组件的其他部分

是否可以在自定义组件的生产者内部调用其他组件(例如,http组件)?

我确实看到了使用骆驼上下文提及的问题(Can a custom Camel component use routes and other components internally?),但是如何在RouteBuilder外部复制路由调用?

1 个答案:

答案 0 :(得分:1)

您需要导入CamelContext,Exchange,ProducerTemplate和ExchangeBuilder。

import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.builder.ExchangeBuilder;

然后,您需要创建生产者模板和骆驼上下文的实例。我使用的是Spring Boot,因此可以注入依赖项。

@Autowired
private ProducerTemplate producer;
@Autowired
private CamelContext camelContext;

在方法定义中,您需要使用ExchangeBuilder创建交换请求。您可以在此处创建正文并添加标题以交换消息。

Exchange exchangeRequest = ExchangeBuilder.anExchange(camelContext)
.withBody("Hello World!")
.withHeader("username", "jdoe")
.withHeader("password", "pass")
.build();

然后您可以在生产者对象上调用send方法,以进入您的路由并捕获响应。

Exchange exchangeResponse = producer.send("direct:startRoute", exchangeRequest)