我有一个用例,我想从队列中读取JMS消息,获取消息内容,这是一个JSON文档,并使用从HTTP请求返回的值增加2个字段,然后将原始消息与增加的值传递到下一个形状。
例如:
- from JMS consumer:
{
"f1": "val1",
"f2": "val2",
"f3": null,
"f4": null
}
我有一个HTTP服务,将返回:
{
"foo": "fooval",
"bar": "barval"
}
我希望稍后在流程中对形状可用的是:
{
"f1": "val1",
"f2": "val2",
"f3": "fooval",
"f4": "barval"
}
我写这篇文章的流程是这样的:
JMS消费者->HTTP请求->记录器
我不确定如何获得与这些HTTP请求值增强的消息并将其传递给日志记录器。HTTP请求将有效负载设置为:
{
"foo": "fooval",
"bar": "barval"
}
如何保留来自JMS消费者的有效负载,并用HTTP请求值简单地增加有效负载?
我觉得我的方法不对;)
您可以将任何操作的输出设置为一个变量,而不是有效负载。例如,HTTP Request输出可以设置为目标变量foobar
。然后,您可以使用Transform组件来创建输入payload
和vars.foobar
所需的base输出。Transform基本上让你写一个DataWeave脚本来做转换。您需要学习一点DataWeave来编写正确的脚本。
话虽如此,得到输出的逻辑是什么还不清楚。只是更新负载的值。F3与vars.foobar.foo的值和类似的payload.f4?这应该很容易,但不清楚这是不是你想要的。
的例子:
<http:request ... target="foobar" targetValue="#[message]">
Transform中的DataWeave脚本可以是这样的:
%dw 2.0
output application/json
---
{
f1 : payload.f1,
f2 : payload.f2,
f3 : vars.foobar.foo,
f4 : vars.foobar.bar
}