【问题标题】:Implementing a Camel transform实现骆驼变换
【发布时间】:2013-01-24 12:01:32
【问题描述】:

我有以下骆驼路线:

RequestToOrderTransform requestToOrderTransform =
    new RequestToOrderTransform();

from("ghttp:///processOrder")
    .transform(requestToOrderTransform)
    .bean(OrderProcessor.class)
    .to("direct:endOfRoute");

它使用 Camel-GAE 从 GAE servlet (processOrder) 接收 HttpServletRequest,然后将请求转换为 Order POJO,最后处理该订单 (OrderProcessor)。

我想写我自己的org.apache.camel.Expression (requestToOrderTransform),到目前为止我已经有了骨架/框架:

public class RequestToOrderTransform implements Expression {
    @Override
    public <T> T evaluate(Exchange arg0, Class<T> arg1) {
        // ???

        return null;
    }
}

在这里,不知何故,我必须将HttpServletRequest(我相信是我从 GAE servlet 消费者那里得到的)转换为我自己的Order POJO。但我不确定如何首先获得HttpServletRequest。收到请求后,我可以提取必要的参数,然后实例化我的新订单实例。但后来我不确定如何处理Order,以便骆驼知道路由它而不是原来的HttpServletRequest

所以我问:

  1. 如何获取我的 HttpServletRequest 实例(或我从 GAE servlet 端点获取的任何对象)?
  2. 如何设置我新实例化的 Order 实例,以便 Camel 使用它作为路由单元(到 OrderProcessor bean)?

提前致谢!

【问题讨论】:

    标签: java apache-camel esb middleware


    【解决方案1】:

    编写表达式似乎是一种糟糕的方式,因为您真正实现的只是一个消息翻译器。但无论如何,只要抓住身体作为绳子,然后用它做任何事情。

    arg0.getIn().getBody(String.class)
    

    我不确定在这种情况下您从 GAE 获得什么数据,但如果它是结构化的(json、xml、平面文件、csv),您可能想查看将字符串转换为 java 对象的various data formats为你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多