Exchange.getIn().getBody() returns empty string in camel on second call(Exchange.getIn().getBody() 在第二次调用时返回骆驼的空字符串)
问题描述
我有 2 个相同的电话:
I have 2 identical calls:
String msg1 = exchange.getIn().getBody(String.class);
String msg2 = exchange.getIn().getBody(String.class);
在 msg1 中,我得到了正确的期望值,但 msg2 是一个空字符串.我没有设置 Out 消息,因此交换 In 消息应该仍然完好无损.请解释为什么会这样.
In msg1 I get the correct expected value , but msg2 is an empty string. I'm not setting the Out message , so the exchange In message should be still intact. Please explain why this is happening.
骆驼路线:
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route id="route1">
<from uri="timer://myTimer?period=2000" />
<setBody>
<simple>Hello World ${header.firedTime}</simple>
</setBody>
<process ref="messageProcessor" />
<to uri="http://localhost:8090"/>
</route>
<route id="route2">
<from uri="jetty://http://localhost:8090" />
<process ref="messageProcessor" />
</route>
</camelContext>
处理器仅包含上面的 2 条语句.route1 中的处理是正确的,但在 route2 中我得到了描述的行为:第一次调用 - 有效字符串,第二次调用 - 空字符串.所以我想可能和HttpMessage转换有关.
The processor contains only the 2 statements from above. The processing in route1 is correct , but in route2 I get the described behaviour : first call - valid string , second call - empty string. So I think maybe it has something to do with HttpMessage conversion.
推荐答案
来自 http://camel.apache.org/jetty.html
Jetty 是基于流的,这意味着它接收到的输入被提交以骆驼为溪流.这意味着您将只能阅读流的内容一次.
Jetty is stream based, which means the input it receives is submitted to Camel as a stream. That means you will only be able to read the content of the stream once.
在使用两次或更多次之前将输入转换为字符串
Just convert the input in a String before use it twice or more times
<route id="route2">
<from uri="jetty://http://localhost:8090" />
<convertBodyTo type="String" />
<process ref="messageProcessor" />
</route>
这篇关于Exchange.getIn().getBody() 在第二次调用时返回骆驼的空字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Exchange.getIn().getBody() 在第二次调用时返回骆驼的空字符串
基础教程推荐
- 如何对 Java Hashmap 中的值求和 2022-01-01
- 问题http://apache.org/xml/features/xinclude测试日志4j 2 2022-01-01
- 无法复制:“比较方法违反了它的一般约定!" 2022-01-01
- Spring AOP错误无法懒惰地为此建议构建thisJoinPoin 2022-09-13
- REST Web 服务返回 415 - 不支持的媒体类型 2022-01-01
- 存储 20 位数字的数据类型 2022-01-01
- RabbitMQ:消息保持“未确认"; 2022-01-01
- Struts2 URL 无法访问 2022-01-01
- 使用堆栈算法进行括号/括号匹配 2022-01-01
- 修改 void 函数的输入参数,然后读取 2022-01-01
