Апач верблюд - все заголовки теряются, за исключением строки во время маршрутизации, в частности, ActiveMQ


Я устанавливаю список в заголовке объекта exchange с другой парой заголовков и перенаправляю его в ActiveMQ.

exchange.getOut().setHeader("testList", testList);
exchange.getOut().setHeader("testObject", testObject); 
exchange.getOut().setHeader("header1", "value1");  
exchange.getOut().setHeader("header2", "value2");

В следующем маршруте, когда я обращаюсь к заголовку объекта exchange, "testList" и testObject отсутствуют ! Но остальные заголовки присутствуют (exchange.getIn().getHeader).

Не можем ли мы отправить какой-либо заголовок (список или любой другой объект), кроме строки?

1 2

1 ответ:

Согласно документации Camel:

Для заголовка exchange. in применяются следующие правила значения:

Значения должны быть примитивами или их встречными объектами (такими как целое число, длина, символ). Типы, строка, последовательность символов, дата, BigDecimal и BigInteger все преобразуются в их toString() представление. Все остальные типы отбрасываются.

Дополнительную информацию можно найти здесь: http://camel.apache.org/jms или здесь http://docs.oracle.com/javaee/1.4/api/javax/jms/Message.html

Смотрите раздел руководства Camel: формат сообщения при отправке

Camel удалит заголовки недопустимых типов, но вы можете использовать компоненты vm или seda вместо activemq. Или вы можете преобразовать свой список в XML или JSON, преобразовать его в строку и отправить эту строку через JMS.