JMSTimestamp Vs Other Дата, хранящая заголовки сообщения JMS - PullRequest
1 голос
/ 09 марта 2020

Я использую AMQs REST API для отправки сообщения в очередь с заголовком, заданным в queryString.

Я устанавливаю заголовок даты myDateHeader со значением миллисекунды UNIX метка времени.

&myDateHeader=1583781133771

Для меня автоматически устанавливается заголовок JMSTimestamp, а также кажется, что он длинный ...

Затем я потребляю это сообщение с верблюдом, хотя и в Talend, и может «проанализировать» JMSTimestamp до форматированной даты.

Однако, когда я пытаюсь сделать то же самое с myDateHeader, я получаю null обратно.

И JMSTimestamp, и myDateHeader показывают значения, если я "разбираю" на String и Long, так что что-то (не) происходит как часть анализа даты.

Talend код показывает

row5.Event_Timestamp = org.apache.camel.builder.SimpleBuilder
                            .simple("${in.header.myDateHeader}")
                            .evaluate(routerExchange, java.util.Date.class);

, показывая правильный resultType согласно классу SimpleBuilder. Код такой же, как и для анализа JMSTimestamp.

Также, когда я пытаюсь

simple("${date:in.header.myDateHeader:yyyyMMdd}")

, я получаю

java.lang.IllegalArgumentException: Cannot find java.util.Date object at command: in.header.myDateHeader

Я предполагаю:

1) что при создании сообщения необходимо установить заголовок с правильным типом Date, чтобы иметь возможность выполнять анализ этой даты как часть потребления?

2) И что REST API устанавливает все заголовки с типом String, и я не могу изменить это с помощью моего вызова REST?

Извините, но я надеюсь, что кто-то может подтвердить вышеизложенное, и, следовательно, что я не могу трактовать myDateHeader так же, как заголовок JMSTimestamp при использовании этих сообщений?

спасибо

1 Ответ

1 голос
/ 10 марта 2020

Ваше второе предположение верно. Пользовательские заголовки анализируются с типом String. В Talend, а также в Apache Camel, который является базовой интеграционной средой Talend ESB, предопределенные заголовки JMS, включая JMSTimestamp, преобразуются в Java типов в соответствии с справочной таблицей «Формат сообщения при получении». .

...