首页 > 解决方案 > Spring云数据流Httpclient

问题描述

我有以下流。 问题的背景

1.

rabbit --password='******' --queues=springdataflow-q --virtual-host=springdataflow --host=172.24.172.184 --username=springdataflow | transform | httpclient --url-expression='http://172.20.24.47:8080/push' --http-method=POST --headers-expression={'Content-Type':'application/x-www-form-urlencoded'} --body-expression={arg1:payload} | log

2.

我在本地运行弹簧靴。

@RestController
public class HelloController {



    @RequestMapping(value = "/push", method = RequestMethod.POST,produces = {MediaType.TEXT_PLAIN})
      public String pushMessage(@RequestParam(value="arg1") String payload) {
        System.out.println(payload);
        return payload;
      } 
}
  1. 我想让兔子消息httpclient作为发布请求的“arg1”参数值的值。意图是发布在兔子队列上的消息被休息后点消费,消息被 SpEL 有效负载捕获。

为此,我正在使用,body-expression = {arg1:payload}但这不起作用,可能在语法上是错误的。

有什么建议么 ?

标签: spring-integrationspring-elspring-cloud-dataflow

解决方案


@RequestParam(value="arg1")实际上是关于请求参数,即 URL 之后的部分,?称为query stringhttps ://en.wikipedia.org/wiki/Query_string 。

所以,如果你真的想arg1=payload在查询字符串中有一对,你需要使用正确的url-expression

--url-expression='http://172.20.24.47:8080/push?arg1='+payload

推荐阅读