在 Mulesoft 4 中使用 HTTP 服务扩充数据

augmenting data with HTTP service in Mulesoft 4

我有一个用例,我想从队列中读取 JMS 消息,获取消息内容,这是一个 JSON 文档,并使用 returned 的值扩充 2 个字段一个 HTTP 请求,然后将带有增强值的原始消息传递到下一个形状。

例如:

{
 "f1": "val1",
 "f2": "val2",
 "f3": null,
 "f4": null
}

我有一个 HTTP 服务 return:

{
 "foo": "fooval",
 "bar": "barval"
}

我希望在流程的后面对形状可用的是:

{
 "f1": "val1",
 "f2": "val2",
 "f3": "fooval",
 "f4": "barval"
}

我写这篇文章的流程是这样的:

JMS 消费者 -> HTTP 请求 -> 记录器

我不确定如何使用这些 HTTP 请求值增强消息并将其传递给记录器。 HTTP 请求会将负载设置为:

{
 "foo": "fooval",
 "bar": "barval"
}

我如何保留来自 JMS 消费者的有效负载并简单地使用 HTTP 请求值增加有效负载?

我觉得我的做法不对;)

您可以设置任何操作的输出to a variable instead of the payload. For example the HTTP Request output can be set to the target variable foobar. Then you can use a Transform component to create the output desired in base to the input payload and vars.foobar. Transform basically let's you write a DataWeave script that does the transformation. You'll need to learn a bit of DataWeave以编写正确的脚本。

话虽如此,但不清楚获取输出的逻辑是什么。只是用 vars.foobar.foo 的值更新 payload.f3 的值,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
}