2015-11-12 64 views
2

在駱駝實例中,我想使用指定的HTTP標頭編碼將休息消息的正文轉換爲字符串。如何使用駝峯RouteBuilder中的http頭字符集定義字節轉換爲字符串?

我想出了這條路線的定義到目前爲止看起來如下:

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

但是我不知道怎麼做才能使用它的值作爲目標字符集爲convertBodyTo評估Exchange.HTTP_CHARACTER_ENCODING頭。

如果主體未轉換,發送到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"); 
相關問題