有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 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区块链之间的交易速度要快得多