Преобразование формата данных Apache Camel JSON из XML в Java DSL - PullRequest
0 голосов
/ 08 февраля 2019

Мы конвертируем устаревшие маршруты 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");

1 Ответ

0 голосов
/ 14 февраля 2019

Я бы предложил использовать компонент Camel XML Json для достижения этой цели, а не переносить их вслепую. Компонент XML JSON

.marshal можно использовать для генерации любого формата на основе конфигураций, таких как потоки BeanIO, записи CSV и т. Д. Json можно использовать только для генерации JSON.

...