当前位置: 首页 > 知识库问答 >
问题:

骆驼http组件未在exchange正文中设置响应

丁安宜
2023-03-14

我使用的是Camel版本3.2.0和Spring Boot版本2.2.6.Release。

我正在使用camel-http组件来使用一个rest服务,该服务以JSON格式返回产品列表。
我正在尝试存储在csv文件中。由于http响应没有设置在out in exchange中,因此正文为空。

<route id="getProducts">
    <from uri="quartz://groupName/timerName?cron=0 0/2 * 1/1 * ? *" />
    <setHeader name="CamelHttpMethod">
      <constant>GET</constant>
    </setHeader>
    <to uri="http://localhost:8080/product"></to>
    <log message=" before processor \n Body ${body} \n headers ${headers}"/>
    <!-- <process ref="processor" /> -->
    <log message=" before convert \n Body ${body} \n headers ${headers}"/>
    <marshal>
        <bindy type="Csv"  classType="com.basf.vo.Product"   />
    </marshal>
    <log message=" after convert \n Body ${body}"/>
    <to uri="file:\balachandar\?fileName=abc.csv"/>
    <log message="Products Received \n ============================= \n"/>
</route>


<log message=" before processor \n Body ${body} \n headers ${headers}"/> => It is printing Body {"productId":1,"name":"Pink Ralph Lauren Polo Shirt","category":"Dress"} in the console

<log message=" before convert \n Body ${body} \n headers ${headers}"/>  => It is not printing the body. Body is empty.

I used custom processor to know the body.

public void process(Exchange exchange) throws Exception {
    String msg = exchange.getIn().getBody(String.class);
    String msg1 = exchange.getMessage(String.class);
    System.out.println("Rest Response is:->" + msg);   //  Rest Response is:->
    System.out.println("Rest Response is:->" + msg1);  //  Rest Response is:->null

}

共有1个答案

龙飞
2023-03-14

响应类型为流。当您记录响应时,第一次使用该流,并且数据已消失。您可以启用流缓存或将流转换为字符串( ),然后再对消息正文执行任何其他操作。

 类似资料:
  • 我在正确设置HTTP组件方面遇到了一些麻烦。目前,微服务从提供者提取JSON内容,对其进行处理,并将其发送到下一个服务以进行进一步的处理。主要问题是这个微服务创建了大量的CLOSE_WAIT套接字连接。我理解“keep-alive”的整个概念将保持连接打开直到我关闭它,但服务器可能会因为某些原因丢弃连接并创建这个CLOSE_WAIT套接字。 我已经创建了一个用于调试/测试目的的小服务,它向Goog

  • 我将我的Fabric8 Spring Boot Camel pom.xml升级到使用Camel 2.16.0,但并非所有组件都在2.16.0中可用 我不得不将以下组件保留在2.15.3,因为我得到了2.16.0版本的“丢失项目”: 骆驼指标 骆驼jsonpath 骆驼Spring靴 这些在Camel 2.16.0中不可用吗? 我使用的是Fabric8版本2.2.46和Spring Boot版本1.

  • 我的骆驼路线是CXF接收器 错误消息:没有可用的正文类型: com.customer.requestcustomeremail.SendEmailRequest 但具有值:com.customer.requestcustomeremail.SendEmailRequest@1bcd32c6类型:java.lang.String on: Message[]。原因:没有类型转换器可用于从类型:java

  • 我的测试处理器: 所以我有下一种情况:1)骆驼成功地从“test-camel-start”队列读取消息2)基处理器成功地处理消息3)在重试将消息传递到“test-camel-success”时失败 我收到了下一个日志跟踪: Log说“请求必须包含参数MessageBody”。 我不知道为什么这个消息体没有出现。

  • 我刚刚开始将Apache Camel用于集成项目。我正在使用将对象持久化到mysql,但mybatisendpoint无法通过以下Trace消息解析: 2016-07-19 15:50:15跟踪事件助手:800-通知者:org。阿帕奇。骆驼impl。DefaultRuntimeEndpointRegistry@5847e0b4未为事件启用:由于未能在以下位置创建路由route1,无法启动Camel

  • 我想在Camel环境中使用Jetty组件。这是我的spring配置的摘录。xml: 下面是用于返回字符串的代码: 本地地址有效(http://127.0.0.1/enc)但是浏览器没有正确显示字符串(显示为“abcÃö¼ÃŸ”–äääääŒääää‰)。我假设问题是一些编码。如何设置像“utf-8”这样的编码? 我在这里找不到任何提示(http://camel.apache.org/jetty.