当前位置: 首页 > 面试题库 >

Exchange.getIn()。getBody()在第二次调用时返回骆驼中的空字符串

步浩壤
2023-03-14
问题内容

我有两个相同的电话:

String msg1 = exchange.getIn().getBody(String.class);
String msg2 = exchange.getIn().getBody(String.class);

在msg1中,我得到了正确的期望值,但是msg2是一个空字符串。我没有设置 Out 消息,因此exchange In
消息应该仍然完整。请解释为什么会这样。

骆驼路线:

<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转换有关。


问题答案:

来自http://camel.apache.org/jetty.html

码头是基于流的,这意味着它收到的输入将作为流提交给Camel。这意味着您将只能读取一次流的内容。

只需将输入转换为字符串,然后再使用两次或多次

<route id="route2">
    <from uri="jetty://http://localhost:8090" />
    <convertBodyTo type="String" />
    <process ref="messageProcessor" />
</route>


 类似资料:
  • 我知道这个话题有答案,但行为和其他问题不一样。 这个AnadirAlimentoActivity是一个完全按照预期工作的。 anadiralimentotivity: 在向列表中添加项目结束后,可以单击“后退”按钮,该按钮将触发此方法: 现在在片段中,使用正确的resultCode、requestCode和data激发OnActivityResult方法 片段: 那么问题是,当您单击另一个按钮时,

  • 问题内容: 在PHP中,最简单的方法是在首次出现特定字符之前返回字符串的一部分? 例如,如果我有一个字符串… “快速的棕色狐狸跳过了等等,等等。” …并且我正在过滤空格字符(“”),该函数将返回“ The” 谢谢! 问题答案: 您 可以 这样做: 但我喜欢这样 更好 :

  • 当我在输入元素中输入第一个字符时,我得到“空字符串”。 在我看来,我在输入元素中输入一个字符,触发“onChange”事件,运行函数getTitle,设置“title”变量,该变量连接到useState钩子,然后控制结果。按照这个推理,我希望输入第一个字符。相反,我得到的是“空字符串”。从第二个字符开始,控制台打印字符。 对于“onInput”,函数也会发生同样的情况。 如何解决这个问题,为什么会

  • 问题内容: 我犹豫要问这个问题,因为它看起来很奇怪。但不管怎么说。以防万一有人已经遇到了相同的问题…文件系统功能(fopem,file,file_get_contents)对于http://包装器表现得很奇怪 它似乎有效。 没有提出错误 。fopen()返回资源。 它不会为所有肯定有效的网址返回任何数据(例如)。 文件返回空数组,file_get_contents()返回空字符串,fread返回f

  • 问题内容: 给我们一个字符串,说一个子字符串,说。我需要找到字符串在原始字符串中第二次出现时的索引。 在这种情况下将返回2。在这种情况下,我希望输出为10。 问题答案: 使用的重载版本,它将起始索引(fromIndex)作为第二个参数:

  • 我们得到一个字符串,比如说< code >“it whatis”,以及一个子字符串,比如说< code >“is”。当字符串< code >“is”在原始字符串中第二次出现时,我需要找到< code >“I”的索引。 在这种情况下将返回2。我希望在这种情况下输出为10。