【问题标题】:Simple camel routing from to简单的骆驼路由从到
【发布时间】:2021-06-25 14:43:46
【问题描述】:

我有一个关于 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 环境中编写测试,如何使用“Your Response positive test”和“Your negative test”来模拟响应?不知何故,我需要能够在 exchange.out.body 中编写响应字符串,对吗?

谢谢,

哈迪

【问题讨论】:

    标签: apache-camel spring-camel


    【解决方案1】:

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

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

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

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

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

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2015-05-11
      • 1970-01-01
      • 2017-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多