获取 Apache Camel 路由中的前一条消息

sam*_*ake 3 apache-camel

我对骆驼很陌生,所以也许我的处理方式是错误的,但我将消息从一个端点路由到另一个端点,并在途中转换它们。然而,下一阶段是向管道添加身份验证。我有一项跟踪经过身份验证的用户的服务。我的计划是,在路线的第一阶段,添加一个过滤器来检查当前用户是否经过身份验证。如果用户不是,我想将消息转换为身份验证请求并将其发送到我的端点。到目前为止一切都很好,但是,在身份验证之后(如果成功)我想将原始消息发送到管道中。这是可以做的事情吗?

我的路线的简化版本是:

from("seda:in").
  filter(method(Authentication.class, "isNotAuthenticated")).
    bean(AuthenticationTransformer.class)
    to("cxfbean:out")
  .end()
  .bean(RequestTransformer.class)
  .to("cxfbean:out")
Run Code Online (Sandbox Code Playgroud)

相同的消息将被发送到两个转换器 bean。

小智 5

您应该在转换消息之前将其保留在Exchange属性中setProperty("originalMessage", body())。之后您可以使用访问该属性getProperty("originalMessage")