我最近开始使用 Apache Camel,我们正在考虑创建自定义组件来抽象大量逻辑并简化路由,但其中一些逻辑涉及 http 请求和其他部分,这些部分具有我们想要利用的现有 Camel 组件。
是否可以从我们的自定义组件的生产者中调用其他组件(例如 http 组件)?
我确实看到了这个问题(自定义Camel组件可以在内部使用路由和其他组件吗? https://stackoverflow.com/questions/23460115/can-a-custom-camel-component-use-routes-and-other-components-internally)提到使用骆驼上下文,但是如何在 RouteBuilder 之外复制路由调用?
您需要导入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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)