Hyperledger Fabric Node sdk 1.3-将1.3通道eventhub用于同一组织的多个对等方

时间:2018-11-01 15:39:34

标签: node.js hyperledger-fabric hyperledger blockchain

我正在尝试使用节点sdk迁移超账结构解决方案。当前的系统使用结构1.2,并且可以按预期工作,但是我想要1.3的新功能。

我已将网络更新为1.3,将节点sdk更新为1.3.0,并将应用程序代码更改为使用通道eventhub。但是在安装chaincode时,我遇到了一个对等体超过1个的组织的问题。由于某种原因,我只能在具有一个对等方的组织上安装chaincode?似乎eventhub无法连接到同一组织中的其他对等方。在查看来自同行的日志时,我也只看到来自可以连接到eventhub的日志的流量

我在做什么:

对于给定的组织,我有3个对等点应安装chaincode。为了进行测试,我在localhost上有3个对等项,配置如下:

{
    host: "peer0",
    url: `grpcs://${Config.ip}:8001`,
    publicKey: readFileSync(resolve("./resources/certs/some.org/peer0.pem")).toString()
},
{
    host: "peer1",
    url: `grpcs://${Config.ip}:8002`,
    publicKey: readFileSync(resolve("./resources/certs/some.org/peer1.pem")).toString()
},
{
    host: "peer2",
    url: `grpcs://${Config.ip}:8003`,
    publicKey: readFileSync(resolve("./resources/certs/some.org/peer2.pem")).toString()
}

因此,在执行任何操作之前,我为每个对等端初始化eventhub,如下所示:

initEventHubs() {

    // Setup event hubs
    try {
        // Now: 1.3.0
        this._peers.forEach((peer: Peer) => {

            const eventHub = this._channel.newChannelEventHub(peer);

            eventHub.registerBlockEvent((block: any) => {
                logger.debug('block', Utils.unmarshalBlock(block));
                this.emit('block', Utils.unmarshalBlock(block));
            }, (err) => {
                logger.error(err);
            });

            eventHub.connect(true);
            this._eventHubs.push(eventHub);
        });


        // Before: 1.2.0
        /*this._organisation.peers.forEach((peer: any) => {

            const eventHub = this._client.newEventHub();

            const peerOptions: object = {
                pem: peer.publicKey,
                'ssl-target-name-override': peer.host
            };

            eventHub.setPeerAddr(peer.eventHub, peerOptions);

            eventHub.connect();
            eventHub.registerBlockEvent((block: any) => {
                this.emit('block', Utils.unmarshalBlock(block));
            });

            this._eventHubs.push(eventHub);
        });*/

    } catch (e) {
        logger.error(`Failed to configure event hubs. Error ${e.message}`);
    }
}

当我执行频道创建或尝试加入频道时,peer2会正常工作并表现出预期的效果。 另外两个人正在从事件中心Error: 14 UNAVAILABLE: Connect Failed抛出error: [Remote.js]: Error: Failed to connect before the deadline URL:grpcs://localhost:8001。它们在正确的端口并且可以到达。如果我只是在同一端口使用相同配置的同一个对等体,那么它将起作用。

有人在同一个组织的多个对等节点上通过节点sdk安装1.3和chaincode吗?如果可以,那么任何人都可以解释它是如何做到的?

我还在其他地方寻找示例,但是没有找到相同组织的多个同等版本1.3。有一些1.2的示例,但没有确切的例子:fabric samplesfabric node sdktests from the fabric node sdk

0 个答案:

没有答案