【问题标题】:Convert Apache Camel JSON data format from XML to Java DSL将 Apache Camel JSON 数据格式从 XML 转换为 Java DSL
【发布时间】:2019-07-02 02:47:58
【问题描述】:

我们正在将传统的 Camel 路由从 XML 转换为 Java DSL,但我们用于编组的 JSON/Jackson 数据格式存在问题。这就是我们在 XML 中的做法:

<camelContext id="camelContext">
    <dataFormats>
        <json id="json"
            library="Jackson"
            allowJmsType="true"
            disableFeatures="WRITE_DATES_AS_TIMESTAMPS"/>
    </dataFormats>
</camel>

 <route id="myRoute">
    <from uri="seda:inqueue"/>
      <marshal>
          <json library="Jackson" />
      </marshal>
      <to  uri="seda:outqueue />
  </route>

...这是 Java 版本(到目前为止)...

@Bean(name = "json")
    public JacksonDataFormat jacksonDataFormat() {
        JacksonDataFormat format = new JacksonDataFormat();
        format.setAllowJmsType(true);
        format.disableFeature(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
        return format;
}

from("seda:inqueue")
    .marshal(json)
    .to("seda:outqueue");

我走对了吗?

另外,这两种方法有什么区别?我的猜测是第一个将 Json TEXT 转换为字节流,第二个将对象转换为 Json TEXT;准确吗?

from("seda:inqueue")
    .marshal(json)
    .to("seda:outqueue");

from("seda:inqueue")
    .json(JsonLibrary.Jackson)
    .to("seda:outqueue");

【问题讨论】:

    标签: java json jackson apache-camel integration


    【解决方案1】:

    我建议使用 Camel XML Json 组件来实现这一点,而不是盲目地迁移它们。 XML JSON component

    .marshal 可用于根据配置生成任何格式,如 BeanIO 流、CSV 记录等。json 只能用于生成 JSON。

    【讨论】:

    • 不确定这有什么帮助,我们从中迁移的遗留 Camel 代码不使用 XML;都是 POJO 和 JSON。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 2011-07-04
    相关资源
    最近更新 更多