Использование Hawtio для запуска маршрута останавливает тело сообщения Camel, зная его класс

#apache-camel #hawtio

#apache-camel #hawtio

Вопрос:

Я использую Hawtio с Camel версии 2.17.1 для управления маршрутами в контексте camel. Когда я останавливаю, а затем перезапускаю один из своих маршрутов с помощью Hawtio, я сталкиваюсь с необычной проблемой, когда сообщение, по-видимому, не знает о своем классе.

Сообщения считываются из очереди и все начинаются как строки. Затем они успешно удаляются с помощью схемы xsd. Во время выбора тело всегда оказывается неизвестным типом, несмотря на то, что до этого оно не было привязано к правильному классу. Как ни странно, затем используется соответствующий преобразователь пользовательских типов для преобразования сообщения в ожидаемый тип.

 <route id="responseRoute" autoStartup="false">
    <from uri="{{response.from.uri}} />
    <transacted ref="PROPAGATION_REQUIRED_CONSUMER"/>

    // class is String

    <unmarshal ref="unmarshalJAXB" />

    // class is type.A

    <choice>
        <when>
            <simple>${body} is 'type.A'</simple>
            <log message="Body is type A" />
            <convertBodyTo type="type.C" />
        </when>
        <when>
            <simple>${body} is 'type.B'</simple>
            <log message="Body is type B" />
            <convertBodyTo type="type.C" />
        </when>
        <otherwise>
            // always this option - unknown type
            <log message="Body is unknown type" />
            <convertBodyTo type="type.C" />
        </otherwise>
    </choice>

    <marshal ref="marshalJAXB" />

    <to uri="{{response.to.uri}}" />
</route>
  

Если для параметра автозапуска установлено значение true, то каждое сообщение обрабатывается успешно,
нажимая правильную опцию в блоке выбора.

Почему запуск маршрута с помощью Hawtio останавливает тело сообщения, зная, к какому классу оно относится? Есть ли способ решить эту проблему?

Комментарии:

1. Не могли бы вы предоставить дамп ошибки?

2. К сожалению, ошибок нет.