我正在嘗試查找處理akka Payloadsizeexceeded異常。但由於無法處理它,我想知道正在傳遞的消息的大小。爲此,我想計算消息的大小,並且此大小需要給出傳遞的clustermessage的確切大小,而不僅僅是請求中的json大小。有沒有辦法知道這個尺寸?Akka Payload Size Exceeded
例如,我的json大小爲31998bytes,但是當在參與者之間傳遞消息時,發生了一定量的編碼,並且傳遞的消息的實際大小增加到32778.如何知道最終的消息大小?
我正在嘗試查找處理akka Payloadsizeexceeded異常。但由於無法處理它,我想知道正在傳遞的消息的大小。爲此,我想計算消息的大小,並且此大小需要給出傳遞的clustermessage的確切大小,而不僅僅是請求中的json大小。有沒有辦法知道這個尺寸?Akka Payload Size Exceeded
例如,我的json大小爲31998bytes,但是當在參與者之間傳遞消息時,發生了一定量的編碼,並且傳遞的消息的實際大小增加到32778.如何知道最終的消息大小?
當您在actor系統之間發送消息時,消息有效負載周圍會有一個信封,其中包含接收者actor ref,sender actor ref,標識要使用的序列化程序以及其他一些內容。其中一些包含字符串(演員路徑,演員系統名稱,節點主機名),這將影響很難說明開銷多大。
我建議你在預期的參與者之間遠程添加測試範圍,然後保守,因爲在決定接受多大的有效載荷時主機名可能會有所不同。
請注意,如果您需要比默認128k更大的有效負載,最好考慮將有效負載拆分成更小的消息,或者使用某種形式的輔助通道傳輸數據,因爲這會導致行首阻止其他較小的消息,例如遠程心跳使遠程處理和羣集不太穩定。
由於新的遠程處理子系統尚未穩定/生產準備就支持大型消息的單獨通道,並且還壓縮了參與者參考,以便通常遠程進行通信的參與者將通過緩存中的索引進行標識而不是完整的序列化演員參考。