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

标签 mule amazon-sqs

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

  • Mule ESB 和集成平台版本:3.6.0 内部版本:ed775fdb
  • Amazon SQS 连接器(Mule 3.5.0+)3.0.0.201506091134

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

API 文档的显示消息应该是字符串。 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:无法从“json”转换为“java.util.HashMap”。消息负载的类型为:String

最佳答案

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

<sqs:message-attributes>

默认为#[payload]并期望有效负载是一个Map。因此,为了避免这种情况,请指定参数并尝试传递 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>

关于Mule SQS sendMessage抛出无法从 "json"转换为 "java.util.HashMap",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31209086/

相关文章:

java - Mule ESB 创建映射负载

amazon-web-services - 调度 SQS 消息

java - Mule 如何处理不符合其 XML 模式的 XML 配置?

java - Mule Flow 中的选择

java - 从 Mule ESB 上的 java session 中读取变量

mule - DataWeave 组件中的条件检查

amazon-web-services - SQS 过期 token : The security token included in the request is expired status code:

amazon-web-services - 设计您的应用程序以处理Amazon SQS中的FIFO

amazon-web-services - AWS 两个 SQS 队列发送给一个工作人员

amazon-web-services - 强制AWS SQS一条一条地处理消息