Mule SQS sendMessage投掷失败转换为" json" to" java.util.HashMap"

时间:2015-07-03 14:24:37

标签: mule amazon-sqs

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

  • Mule ESB和集成平台版本:3.6.0 Build:ed775fdb
  • Amazon SQS Connector(Mule 3.5.0+)3.0.0.201506091134

最新版本的连接器需要指定message属性。

API doc的show message应该是String。 http://mulesoft.github.io/sqs-connector/3.0.0/mule/sqs-config.html#send-message

使用:

<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.TransformerMessagingException:无法转换为&#34; json&#34; to&#34; java.util.HashMap&#34;。消息有效内容的类型为:String

1 个答案:

答案 0 :(得分:2)

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

<sqs:message-attributes>

默认为#[payload]并期望有效负载为Map。所以为了避免这种情况,请指定param并尝试传递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>