'message cannot be resolved or is not a field' Talend ESB 的 tMomOutput 错误

'message cannot be resolved or is not a field' error in tMomOutput of Talend ESB

我正在使用 tMomOutput 组件 Talend ESB open studio 插入 XML 消息Apache Active MQ

  1. 使用 XMLMap 组件创建 XML 文档。
  2. 使用 tConvertType 组件将 XML 文档转换为字符串。
  3. 使用 tMomOutput 组件将字符串消息从 tConvertType 发送到 Active MQ 队列。

tMomOutput 组件中出现以下编译错误。

org.talend.designer.runprocess.ProcessorException: Job compile errors At least job "MQJobDemo" has a compile errors, please fix and export again. Error Line: 1238 Detail Message: message cannot be resolved or is not a field

在没有任何工作快照或工作流程描述的情况下,我将根据我的个人经验推断此问题的原因。

当您尝试引用不属于作业的 "active" 部分的某些输入流或变量时,就会发生这种情况。例如。考虑以下流程:

tOracleInput -- Main1 -> tMap -- Main2 -> tOracleOutput

这里Main1和Main2分别是输入流和输出流。现在,如果 Main1 重命名为 "message",则将任何传入字段(例如 ID)引用为 message.ID 都可以正常工作。但是,如果您尝试在 tMap 中引用与 messag.ID 相同的字段,您将收到错误消息:消息无法解析或不是字段。这是因为 "messag" 没有引用任何实体。

所以我的建议是检查您使用该引用变量的作业的所有实例,以及该特定引用变量是否在任何地方都可用。

根据您的情况,它给您错误,因为您没有将任何字段映射到输入组件的 tMOMOutput。将 tMap 放在 tConvertType 和 tMomOutput 之间。

你也可以用其他方式,添加tMap组件,同时将XML文档映射到tMomOuput,输出端变量为string。那么你就不必专门使用 tConvertType