我目前的情况:
我有10000条记录作为批量输入.根据我的理解,批处理仅用于逐个记录处理.因此,我在批处理步骤中使用dataweave组件转换每个记录(注意:我没有使用任何批处理提交)并将每个记录写入文件.进行逐条记录处理的原因在于,在任何特定记录中都存在无效数据,只有该特定记录失败,其余部分将被正确处理.
但在我看到的许多博客中,他们使用带有dataweave组件的batchcommit(带流).因此,根据我的理解,所有记录将一次性提供给数据编织,如果一条记录包含无效数据,则所有10000条记录都将失败(在数据编织时).然后,逐个记录处理的点丢失.以上假设是正确的还是我想错了?
这就是我不使用批量提交的原因.
现在,正如我所说,我将每条记录发送到一个文件.实际上,我确实需要将每条记录发送到5个不同的CSV文件.所以,目前我在BatchStep中使用Scatter-Gather组件将它发送到五个不同的路由.
因为,你可以看到图像.输入阶段提供10000条记录的集合.每条记录将使用Scatter-Gather发送到5条路线.
是,我使用的方法是好的,或任何更好的设计可以遵循?
此外,我已经创建了第二个批处理步骤,仅捕获FAILEDRECORDS.但是,使用当前的设计,我无法捕获失败的记录.
mule esb 中 #[message.payloadAs(java.lang.String)] 的目的是什么?
有人可以用一个例子来解释我吗?当我的 mule esb 从网络服务得到响应时。当我使用 #[payload] 放置简单记录器时,我可以在日志中看到一些简单的哈希码,例如 @1b8353(但不是有效负载消息 xml)。但是当使用 #[message.payloadAs(java.lang.String)] 记录时,我可以清楚地看到有效负载 xml 被记录。有人可以清楚地解释其目的吗?
请评论以进一步澄清!!!!
<Orders>
<Order><sample att="a1">b1</sample></Order>
<Order><sample att="a2">b2</sample></Order>
<Order><sample att="a3">b3</sample></Order>
.
.
.
.
</Orders>
Run Code Online (Sandbox Code Playgroud)
<Orders>
<Order><sample>a1||b1</sample></Order>
<Order><sample>a2||b2</sample></Order>
<Order><sample>a3||b3</sample></Order>
.
.
.
.
</Orders>
Run Code Online (Sandbox Code Playgroud)
我需要在dataweave 组件中实现这一点。我在 datamapper 中也尝试过使用一些规则选项,但没有结果。所以,请帮助我。我需要在 dataweave 组件中实现这一点。带有语法的代码片段真的很有帮助。