简单的骆驼路由从到

时间:2021-06-24 14:36:47

标签: apache-camel spring-camel

我有一个关于 Camel 路由的基本问题。假设我有以下路线:

from(amq:MyQueue).process("jmsToHttp4").to("http4://dummyhost:8080").to("file://out/MyFolder");

假设 http4-Response 只是一个字符串“您的响应”。据我了解文档,可以通过以下方式检索“您的回复”:

exchange.getOut().getBody()

假设我只想写“file://out/MyFolder”,前提是响应包含“Response”这个词。我怎样才能做到这一点?

还有一个问题: 如果我想在 spring 环境中编写一个测试,我如何用“你的响应积极测试”和“你的消极测试”来模拟响应?不知何故,我需要能够在 exchange.out.body 中写入响应字符串,对吗?

谢谢,

哈迪

1 个答案:

答案 0 :(得分:0)

一种选择是在 HTTP 调用之后立即声明一个 .filter(body().contains("Response"))

至于测试,您可以使用模拟组件,该组件为您提供处理交换的方法,并在消息到达模拟端点时断言您需要的任何内容。

实际上有一些替代测试......我习惯于在属性文件中声明端点并使用类中的键,例如.to("{{my.http.target}}")。因此,在这种情况下,在测试环境(专用属性文件)中,您将使用模拟替换 http4。

在我看来,它更简洁,在编写测试时需要更少的上下文控制,主要是在大型/复杂的应用程序中。另一方面,这可能会影响代码的可读性。

但是,如果您希望在 Java 类中保留声明,则必须在测试环境中拦截 http4 调用,然后将其转移到您的模拟端点。

希望对你有帮助。