超过Akka有效载荷大小

时间:2017-08-01 14:25:24

标签: exception akka payload exceed

我正在尝试查找处理akka Payloadsizeexceeded异常。但由于无法处理它,我想知道正在传递的消息的大小。为此,我想计算消息的大小,这个大小需要给出传递的clustermessage的确切大小,而不仅仅是我请求中的json大小。有没有办法知道这个尺寸?

例如,我的json大小是31998bytes但是当在actor之间传递消息时,正在发生一些编码量,并且传递的消息的实际大小增加到32778.我怎么能知道这个最终消息大小?< / p>

1 个答案:

答案 0 :(得分:1)

当您在actor系统之间发送消息时,消息有效负载周围有一个信封,其中包含收件人actor ref,sender actor ref,标识要使用的序列化程序以及其他一些内容。其中一些包含字符串(actor路径,actor系统名称,节点主机名),这将影响使得很难准确说明开销有多大。

我建议您添加测试覆盖率,在预期的角色之间远程发送消息,然后保守,因为在决定接受多大的有效负载时主机名可能会有所不同。

请注意,如果您需要比默认128k大很多倍的有效负载,最好考虑将有效负载拆分为较小的消息,或者使用某种形式的侧通道来传输数据,因为它会导致行头阻塞对于其他较小的消息,例如远程处理心跳使远程处理和群集不太稳定。

新的远程处理子系统尚未稳定/生产就绪支持单个通道用于大型消息,另外还压缩了actor refs,以便经常远程通信的actor将被缓存中的索引识别而不是一个完整的序列化演员参考。

相关问题