Апач верблюд - все заголовки теряются, за исключением строки во время маршрутизации, в частности, 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 ответ:
Согласно документации 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.