apache / apache/incubator-seata

关于seata使用的协议能够支持的最大消息体问题咨询

Open
#7,296 1 comment 0 reactions 1 assignee Claimed by @Bughue View on GitHub
Dominant language
Java
Stars
26k
Forks
8.8k
Avg merge
1d 8h
Merged PRs (30d)
4

Description

一、背景介绍
您好,在使用tcc模式,在prepare方法里会使用@BusinessActionContextParameter传递业务方法参数如代码中的bizData,在我们的场景下这个bizData可能很大,这个参数信息会随着tcc 分支上报到服务端,所以想了解下seata 协议能够设计能够传输的上限
```
public boolean prepare(BusinessActionContext actionContext, @BusinessActionContextParameter(paramName = "bizData" Object bizData) ) {
//省略
return true;
}

```

我看了一下相关的编码和解码类,在org.apache.seata.core.rpc.netty.v1.ProtocolV1Encoder中我发现Full length定义的长度是4个字节,所以理论全部长度是4GB,

Image

但是在解码器中org.apache.seata.core.rpc.netty.v1.ProtocolV1Decoder,却限制了整个桢的大小为8M,

Image

基于上面我想确认下,所以通过在tcc中传递的消息的长度理论上来说应该是小于8M对吗(不考虑头部长度)?如果是的话想了解下为啥编码和解码在长度上的设计不是统一的,是出于什么考虑的,这种限制有办法配置修改吗?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.