首页 > 解决方案 > 使用 Anypoint Studio 转换 EMS 队列消息并插入数据库

问题描述

我正在尝试收听和使用 EMS 队列消息并将其转换为使用 Anypoint Studio 平台插入到数据库中。

您可以在下面找到 EMS 队列消息的示例,以及目标数据库表的结构,以及我遇到的错误,我找不到任何可以帮助我解决此问题的信息,希望对如何解决它有任何见解!谢谢!

EMS 队列消息:1 Lopez, Gerardo 22/07/1994 323 Corona, San Pedro, Mexico 8177228822

目标数据库表列:id、first_name、last_name、birth_date、street、city、country、phone 我需要在相应的列中插入适当的数据并将所有字符转换为小写,下面你可以找到我做的不对和我得到的错误!

过程

转换消息详细信息

控制台输出

由以下原因引起:org.mule.weave.v2.module.reader.ReaderParsingException:payload@[1:4](行:column)处的意外字符“G”,预期输入结束但将G, while reading 有效负载作为 Json。

所有 EMS 队列消息都重复相同的消息!

标签: jsonmuledataweavetibco-ems

解决方案


我猜EMS是指TIBCO EMS。看起来应用程序正在接收来自 TIBCO EMS 队列的消息,该消息是字符串:

16 Gonzalez, Martin...

出于某种原因,DataWeave 试图将其解析为 JSON 文档。这在错误中很清楚。它在 G 中失败,因为开头是一个数字,所以 JSON 的解析器并不期望 G 字符在那里。一个数字本身就是一个完全有效的 JSON 文档。

您必须为输入设置正确的格式。如果 TIBCO EMS 连接器正在从消息中接收 application/json,则应从发送方更改它。

如果您需要强制格式,您可以使用 set payload 虽然我不建议强制它,除非没有其他选择:

<set-payload value="#[payload]" mimeType="text/plain" >

推荐阅读