如何使用 camel RouteBuilder 中的 http header 字符集定义将字节 body 转换为字符串?

How to convert bytes body to string using http header charset definition in camel RouteBuilder?

在 camel 实例中,我想使用 HTTP header.

的指定编码将剩余消息的 body 转换为字符串

到目前为止我想出的路由定义如下所示:

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

但是我不知道如何评估 Exchange.HTTP_CHARACTER_ENCODING header 以便将其值用作 convertBodyTo.

的目标字符集

如果 body 没有转换,发送到 jms queue 的消息将是一个 jms 字节消息,但我希望它是一个 jms 文本消息。

如何使用 Exchange.HTTP_CHARACTER_ENCODING 值作为 convertBodyTo 的参数?

我实现了一个新的处理器来完成这项工作:

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");