如何使用 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");
在 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");