error.errorMessage 和 error.muleMessage 有什么区别?

问题描述 投票:0回答:2

我正在尝试理解 mule 错误对象,但我对调试器中看到的内容有点困惑。

假设我的应用程序中存在 http 请求调用失败,并且在调试器中我可以看到带有 muleMessage 属性的错误对象。

如果我右键单击错误对象>复制值,那么我在那里看不到 muleMessage 。在那里它被称为 errorMessage。两者具有相同的值。

对于 IBM MQ 侦听器也类似。当我在调试器中查看属性时,我可以看到attributes.headers.messageId。然而,当我使用 munit 记录在 munits 中捕获它时,在 JSON 中的 attribute.headers.JMSMessageID 中捕获相同的值。

我应该使用哪些?

mule dataweave mulesoft
2个回答
0
投票

对于错误,您应该只使用记录的表达式:https://docs.mulesoft.com/mule-runtime/latest/mule-error-concept#selector_expressions

在该文档中记录了

#[error.errorMessage]
,但另一个没有记录。仅仅因为您在调试器中看到某些属性并不意味着您应该使用它们。有些是 Mule 内部使用的,但不能保证它们将来可以访问。由于 Mule 版本中的内部更改,使用这些未记录值的应用程序在无法访问时会失败。


0
投票

除了@Aled 描述的内容之外。

处理 Mule 错误和属性时,区分遇到这些属性的不同上下文非常重要

错误对象用于捕获有关流程执行期间发生的错误的信息。记录使用的关键属性是 error.errorMessageerror.description。这些属性是公共 API 的一部分,并保证在 Mule 版本中保持稳定。

error.errorMessage 提供了清晰、简洁的错误描述,而 error.description 提供了其他详细信息(如果有)。需要注意的是,虽然调试器可能会显示其他属性,例如 muleMessage,但这些属性没有正式记录,因此不应依赖这些属性。这些内部属性可能会在未来的 Mule 版本中发生更改,恕不另行通知,如果您的应用程序依赖它们,则可能会导致应用程序失败。

对于 JMS 相关属性,JMSMessageID 是根据 JMS 规范的标准化名称,并且可能是您的实现中更可靠的选择。

相关官方文档- https://docs.mulesoft.com/mule-runtime/latest/mule-error-concept#selector_expressions

© www.soinside.com 2019 - 2024. All rights reserved.