Hyperledger结构Java SDK grpc maxInboundMessageSize
我正在运行Hyperledger fabric 2.0区块链,使用脚本文件创建渠道、订购方和对等方。我使用fabric gateway java:2.1.1作为java SDK,并使用连接配置文件从SDK连接到区块链,请参见以下内容:
public static Gateway connect() throws Exception{
// Load a file system based wallet for managing identities.
Path walletPath = Paths.get("wallet");
Wallet wallet = Wallets.newFileSystemWallet(walletPath);
// load a CCP
Path networkConfigPath = Paths.get("..", "..", "TestBlockchain", "organizations",
"peerOrganizations", "org1.test.com", "connection-org1.yaml");
Gateway.Builder builder = Gateway.createBuilder();
builder.identity(wallet, "appUser").networkConfig(networkConfigPath).discovery(true);
return builder.connect();
};
我的连接配置文件如下所示:注意:我已删除此问题的证书
name: TestBlockchain-org1
version: 1.0.0
channels: testchannel
client:
organization: Org1
connection:
timeout:
peer:
endorser: '300'
organizations:
Org1:
mspid: Org1MSP
peers:
- peer0.org1.test.com
certificateAuthorities:
- ca.org1.test.com
peers:
peer0.org1.test.com:
url: grpcs://localhost:7051
tlsCACerts:
pem: |
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
grpcOptions:
ssl-target-name-override: peer0.org1.test.com
hostnameOverride: peer0.org1.test.com
grpc.max_send_message_length: 9000000
grpc.max_receive_message_length: 9000000
peer1.org1.test.com:
url: grpcs://localhost:7051
tlsCACerts:
pem: |
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
grpcOptions:
ssl-target-name-override: peer1.org1.test.com
hostnameOverride: peer1.org1.test.com
grpc.max_send_message_length: 9000000
grpc.max_receive_message_length: 9000000
certificateAuthorities:
ca.org1.test.com:
url: https://localhost:7054
caName: ca-org1
tlsCACerts:
pem:
- |
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
httpOptions:
verify: false
当我设置grpc时。连接配置文件中的最大接收消息长度当尝试从大于4GB的区块链接收消息时,它似乎不起作用
我一直得到的错误是资源耗尽:压缩的gRPC消息超过最大大小4194304 4GB
问:是否有其他方法可以在连接配置文件中或java代码本身中增加grpc的限制
我曾尝试在互联网上搜索解决方案,但似乎没有那么希望有人能来帮助我。提前感谢:)
# 1 楼答案
我没能解决这个问题,尽管我确实找到了解决办法。我最终使用fabric Go SDK而不是Java SDK,因为Go SDK默认允许最多100MB的grpc最大消息长度,这最终解决了我的问题
Go SDK的链接:https://github.com/hyperledger/fabric-sdk-go
但是,使用Go SDK的唯一缺点是默认情况下grpc超时设置为30秒
我还发现,当使用Go SDK而不是Java SDK时,与Hyperledger Fabric区块链之间的交易速度要快得多