2015-11-12 2 views
2

В экземпляре верблюда я хотел бы преобразовать тело сообщения останова в строку, используя указанную кодировку HTTP-заголовка.Как преобразовать тело байта в строку с использованием определения заголовка HTTP-заголовка на верблюде RouteBuilder?

Определение маршрута я придумал до сих пор выглядит следующим образом:

from("cxfrs:bean:rsServer") 
    .convertBodyTo(String.class, header(Exchange.HTTP_CHARACTER_ENCODING).evaluate(refToCurrentExchange, String.class)) 
    .inOnly("activemq:jms:foo"); 

Однако я не знаю, как оценить заголовок Exchange.HTTP_CHARACTER_ENCODING для того, чтобы использовать его значение в качестве целевого набора символов для convertBodyTo.

Если тело не преобразовано, сообщение, отправленное в очередь jms, будет сообщением байтов jms, но я бы хотел, чтобы это текстовое сообщение jms.

Как использовать значение Exchange.HTTP_CHARACTER_ENCODING в качестве аргумента для convertBodyTo?

ответ

1

Я реализовал новый процессор для выполнения работы:

public static final class ConvertBodyToStringProcessor implements Processor { 
    @Override 
    public void process(Exchange exchange) throws Exception { // NOPMD 
     new ConvertBodyProcessor(String.class, (String) new HeaderExpression(Exchange.HTTP_CHARACTER_ENCODING).evaluate(exchange)).process(exchange); 
    } 
} 

теперь определение маршрута выглядит следующим образом:

from("cxfrs:bean:rsServer") 
.process(new ConvertBodyToStringProcessor()) 
.inOnly("activemq:jms:foo"); 
Смежные вопросы