2015-07-03 57 views
2

升級到最新的SQS連接器之前的工作代碼現在失敗。Mule SQS sendMessage引發無法從「json」轉換爲「java.util.HashMap」

  • 騾子ESB和集成平臺版本:3.6.0編譯:ed775fdb
  • 亞馬遜SQS連接器(騾子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」 改造。消息負載的類型爲:字符串

回答

2

我想這是因爲那裏有我一個可選的參數命名爲:

<sqs:message-attributes> 

默認爲#[載荷],並預計該有效載荷是一個地圖。因此,爲了避免這種情況,請指定參數並嘗試傳遞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> 
+0

謝謝!在添加消息屬性後,所有工作都會重新開始。 – Chris

相關問題