Mule SQS sendMessage抛出无法从转换为;json";至;java.util.HashMap“;

Mule SQS sendMessage抛出无法从转换为;json";至;java.util.HashMap“;,mule,amazon-sqs,Mule,Amazon Sqs,升级到最新的SQS连接器后,以前的工作代码现在失败 Mule ESB和集成平台版本:3.6.0构建:ed775fdb 亚马逊SQS连接器(Mule 3.5.0+)3.0.0.201506091134 连接器的最新版本要求指定message属性 API文档的显示消息应为字符串。 使用: <object-to-string-transformer doc:name="Object to String"/> 流接受发布的数据并将其作为SQS消息提交 <flow name=

升级到最新的SQS连接器后,以前的工作代码现在失败

  • Mule ESB和集成平台版本:3.6.0构建:ed775fdb
  • 亚马逊SQS连接器(Mule 3.5.0+)3.0.0.201506091134
连接器的最新版本要求指定message属性

API文档的显示消息应为字符串。

使用:

<object-to-string-transformer doc:name="Object to String"/>

流接受发布的数据并将其作为SQS消息提交

<flow name="rxWebhook">
    <http:listener config-ref="HTTPS_8081" path="/" doc:name="HTTPS" responseStreamingMode="ALWAYS">
        <http:response-builder disablePropertiesAsHeaders="true"/>
    </http:listener>
    <object-to-string-transformer doc:name="Object to String"/>
    <sqs:send-message config-ref="Amazon_SQS_USWEST2" message="#[payload]" queueUrl="${aws.sqs.myQueue}" doc:name="Amazon SQS"/>
</flow>

将json数据发布到流时,会出现以下错误:


org.mule.api.transformer.TransformerMessageException:无法从“json”转换为“java.util.HashMap”。消息负载的类型为:String

我认为这是因为有一个可选参数,名为:

<sqs:message-attributes>

默认为#[payload],并期望有效负载是一个映射。因此,为了避免这种情况,请指定参数并尝试传递null可能:

<sqs:send-message config-ref="Amazon_SQS_USWEST2" message="#[payload]" queueUrl="${aws.sqs.myQueue}" doc:name="Amazon SQS">
            <sqs:message-attributes ref="#[null]"/>
</sqs:send-message>