简单的骆驼路线从到
Simple camel routing from to
我有一个关于 Camel 路由的基本问题。假设我有以下路线:
from(amq:MyQueue).process("jmsToHttp4").to("http4://dummyhost:8080").to("file://out/MyFolder");
假设 http4-Response 只是一个字符串“Your Response”。据我对文档的理解,可以通过以下方式检索“您的回复”:
exchange.getOut().getBody()
假设我只想写“file://out/MyFolder”,前提是响应包含单词“Response”。我怎样才能做到这一点?
还有一个问题:
如果我想在 spring 环境中编写测试,我怎样才能用“你的响应正面测试”和“你的负面测试”来模拟响应?我需要以某种方式在 exchange.out.body 中写入响应字符串,对吗?
谢谢,
哈迪
一个选项是在 HTTP 调用后立即声明一个 .filter(body().contains("Response"))
。
至于测试,您可以使用模拟组件,它为您提供处理交换的方法,并在消息到达您的模拟端点时断言您需要的任何内容。
实际上有一些替代方法可以测试...我习惯于在属性文件中声明端点并使用 class 中的密钥,例如.to("{{my.http.target}}")
。因此,在这种情况下,在测试环境(专用属性文件)中,您将用 mock 替换 http4。
在我看来,它更简洁,并且在编写测试时需要更少的上下文控制,主要是在 big/complex 应用程序中。另一方面,这可能会影响代码的可读性。
但如果您希望在 Java class 中保留声明,则必须拦截测试环境中的 http4 调用,然后将其转移到您的模拟端点。
希望对您有所帮助。
我有一个关于 Camel 路由的基本问题。假设我有以下路线:
from(amq:MyQueue).process("jmsToHttp4").to("http4://dummyhost:8080").to("file://out/MyFolder");
假设 http4-Response 只是一个字符串“Your Response”。据我对文档的理解,可以通过以下方式检索“您的回复”:
exchange.getOut().getBody()
假设我只想写“file://out/MyFolder”,前提是响应包含单词“Response”。我怎样才能做到这一点?
还有一个问题: 如果我想在 spring 环境中编写测试,我怎样才能用“你的响应正面测试”和“你的负面测试”来模拟响应?我需要以某种方式在 exchange.out.body 中写入响应字符串,对吗?
谢谢,
哈迪
一个选项是在 HTTP 调用后立即声明一个 .filter(body().contains("Response"))
。
至于测试,您可以使用模拟组件,它为您提供处理交换的方法,并在消息到达您的模拟端点时断言您需要的任何内容。
实际上有一些替代方法可以测试...我习惯于在属性文件中声明端点并使用 class 中的密钥,例如.to("{{my.http.target}}")
。因此,在这种情况下,在测试环境(专用属性文件)中,您将用 mock 替换 http4。
在我看来,它更简洁,并且在编写测试时需要更少的上下文控制,主要是在 big/complex 应用程序中。另一方面,这可能会影响代码的可读性。
但如果您希望在 Java class 中保留声明,则必须拦截测试环境中的 http4 调用,然后将其转移到您的模拟端点。
希望对您有所帮助。