Hyperledger fabric 如何在从对等方加入通道时启用发现角色

Hyperledger fabric 如何在从对等方加入通道时启用发现角色,hyperledger-fabric,hyperledger-fabric-sdk-java,Hyperledger Fabric,Hyperledger Fabric Sdk Java,在尝试使用Fabric Java SDK中的发现服务执行事务时,出现以下错误 org.hyperledger.fabric.sdk.exception.ServiceDiscoveryException: The channel is not configured with any peers with the 'discover' role 我使用peer shell命令加入通道,而不是Fabric Java SDK。一旦频道已加入,我如何在频道中配置该发现角色 感谢发现角色的概念是一个Fa

在尝试使用Fabric Java SDK中的发现服务执行事务时,出现以下错误

org.hyperledger.fabric.sdk.exception.ServiceDiscoveryException: The channel is not configured with any peers with the 'discover' role
我使用peer shell命令加入通道,而不是Fabric Java SDK。一旦频道已加入,我如何在频道中配置该发现角色


感谢发现
角色的概念是一个Fabric Java SDK概念。当您使用SDK创建通道定义并向其中添加对等方时,您需要将该对等方定义为具有discover角色


如果您使用fabric gateway java SDK包而不是fabric SDK java包,那么这一切都可以为您处理。fabric gateway java包为用java编写fabric客户端应用程序提供了一个更容易的入门平台,尽管不如使用fabric sdk java强大。

我找到了代码中缺失的部分。希望它能帮助有类似问题的人。只需将所需的peerRoles添加为@david_k comments:

我有:

channel.addPeer(peer);
用这个替换它,解决了这个问题:

channel.addPeer(peer, createPeerOptions().setPeerRoles(EnumSet.of(PeerRole.SERVICE_DISCOVERY, PeerRole.LEDGER_QUERY, PeerRole.EVENT_SOURCE, PeerRole.CHAINCODE_QUERY)));

好的,但是在我使用对等shell命令创建通道之后,有没有办法使用fabric sdk java启用“发现”角色?怎么用?(在项目的阶段,我们现在无法轻松地转移到fabric gateway java)这取决于您如何创建对等对象您的代码,您需要定义该对等对象并赋予其发现角色。这个发现角色纯粹是一个JavaSDK概念。与对等服务器无关。您可以向任何对等方进行发现调用。只是java sdk希望知道您要向哪些对等方调用发现