Mulesoft Dataweave,LDAP to SOAP大消息以特定大小截斷。大小限制?
因此,我對Mule「Transform Message」組件的任務是從LDAP Directory Service獲取一堆用戶信息,並使用SOAP將它提供給舊數據庫端點。相當簡單的變換東西。
主要!關於此操作是必須提供給端點的消息的大小。整個有效負載必須在單個消息中提供,否則該服務將刪除不是有效負載一部分的所有條目(沒有明確的「刪除」服務)。這是一個問題,因爲目錄中的用戶數量大約爲20,000,導致每條消息的大小都是5MB左右。
我在Mule Studio中的流程目前適用於LDAP組件返回的用戶數量較少。從端點成功返回,我可以看到在舊環境中更新的數據。當將其應用於更符合「生產逼真」的負載時,Web服務使用者(SOAP)會出現奇怪的異常(意外的EOF /字符)。
所以我在中間插着文件組件dumpcheck正被髮送給消費者的信息。這條消息在它完成之前確實被切斷了,這是EOF的來源。
這是Dataweave中的轉換腳本。
%output application/xml
%namespace ns0 test.namespace.com
---
{
ns0#updateContact: {
ns0#ContactType: "Primary",
ns0#ContactDetails: {
(payload map {
(ns0#ContactDetailElem: {
ns0#personID: $.personID,
ns0#contactDetail: $.desc
}) when $.personID != null
})
}
}
}
期望的輸出低於併成功發生在較小的有效載荷下。
<?xml version='1.0' encoding='windows-1252'?>
<ns0:updateContact xmlns:ns0="test.namespace.com">
<ns0:ContactType>Primary</ns0:ContactType>
<ns0:ContactDetails>
<../>
<ns0:ContactDetailElem>
<ns0:personID>{Integer}</ns0:personID>
<ns0:contactDetail>{String.detail}</ns0:contactDetail>
</ns0:ContactDetailElem>
<../>
</ns0:ContactDetails>
</ns0:updateContact>
在大載荷將發生以下情況在文件
<?xml version='1.0' encoding='windows-1252'?>
<ns0:updateContact xmlns:ns0="test.namespace.com">
<ns0:ContactType>Primary</ns0:ContactType>
<ns0:ContactDetails>
<../>
<ns0:ContactDetailElem>
<ns0:personID>{Integer}</ns0:personID>
<ns0:contactDetail>{String.detail}</ns0:contactDetail>
</ns0:ContactDeta
它看起來像一個錯字,但看起來是什麼樣子被削減的消息時,它可以完成之前結束。文件大小始終停止在3,553,099個字符。當然這會導致流失,因爲xml是無效的。
然後問題是Dataweave轉換器可以創建的消息大小有限制嗎?如果不是合法的錯誤,而是配置問題,我會在哪裏找到這個設置?我看了一下,但找不到遇到此類問題的人。
TL; DR:Do Dataweave變換消息的大小限制在3.38MB左右?
異常造成的:com.ctc.wstx.exc.WstxEOFException:在序言意外結束
PS:我發現在dataweave流的文檔打字後,會看到,如果這能幫助我的情況。否則,我正在考慮實施一種解決方法,在數據織物之外構建消息,然後將消息傳遞給消費者。
爲什麼不使用自定義java變壓器? – Priyanshu
我的意思是肯定的,我可以定義我自己的類來做轉換和消息,但它有點失敗了通過Mule集成的目的不是嗎? – SpartanVXL