如何在Apache Camel 3.X上设置header.X路线?



我正在骆驼路线上做集成测试。

骆驼路线:

from("direct:abc")
.routeId("abc-route")
.process(MyProcessor())
.toD("direct:xyz")

由于这条路由被隔离测试,我需要在测试中设置头;以前,他们从另一条路线到达。我该怎么做呢?

简化测试类:

@SpringBootTest
@MockEndpoints
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)
class MyRouteTest {
@Autowired
lateinit var camelContext: CamelContext
@Produce(uri = "direct:abc")
lateinit var template: ProducerTemplate
@EndpointInject(uri = "mock:direct:xyz")
lateinit var destEndpoint: MockEndpoint
@Test
fun `should test route`() {
template.sendBody("")
}
}

我已经尝试了camelContext.adapt(ModelCamelContext::class.java),但仍然无法到达路由并强制修改它。

尽管在评论中已经有了答案,我认为这个问题值得有一个答案。

ProducerTemplate接口有许多不同的方法来发送Camel Exchange到Camel端点。

有一些方法可以只发送消息体,一个消息体有一个或多个报头,或者一个消息体有一个或多个Exchange属性。

还有一个流畅的接口可用于以不错的描述性方式自定义Exchange.

骆驼文档中的例子:

Integer result = FluentProducerTemplate.on(context)
.withHeader("key-1", "value-1")
.withHeader("key-2", "value-2")
.withBody("Hello")
.to("direct:inout")
.request(Integer.class);

最新更新