spring-integration - 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;
}
}
我想让兔子消息
httpclient
作为发布请求的“arg1”参数值的值。意图是发布在兔子队列上的消息被休息后点消费,消息被 SpEL 有效负载捕获。
为此,我正在使用,body-expression = {arg1:payload}
但这不起作用,可能在语法上是错误的。
有什么建议么 ?
解决方案
这@RequestParam(value="arg1")
实际上是关于请求参数,即 URL 之后的部分,?
称为query string
:https ://en.wikipedia.org/wiki/Query_string 。
所以,如果你真的想arg1=payload
在查询字符串中有一对,你需要使用正确的url-expression
:
--url-expression='http://172.20.24.47:8080/push?arg1='+payload
推荐阅读
- cupy - Chainer:没有名为“cupy.util”的模块`
- docker - 如何获取 docker 服务错误
- javascript - 警告:函数组件不能被赋予 refs
- django - 如何从 django 管理面板中删除 user_permissions
- matlab - 如何在matlab中对多个变量中的一组曲线进行切片和存储?
- amazon-web-services - Terraform 'aws_secretsmanager_secret' 传递 arn 错误:模板插值无效
- django - Django 模式选择日期
- bash - 如何记住哪个扩展 ${var%} ${var#} 从哪一端工作?
- java - 春季应用程序与jpa的关联错误
- python - 在以下行 python 中找到一个单词