Hyperledger Java SDK的客户端事件监听器

问题描述 投票:1回答:2

我对Hyperledger布一个Java SDK基于客户端和我能够连接并发送交易建议请求,创建总帐条目和查询台账。

我与注册并听取阻止和CHAINCODE事件挣扎。我想启动客户端,专门用于监听和处理这些事件的一个单独的线程。

我发现迄今:

HFClient client = HFClient.createNewInstance();
Channel channel = client.newChannel("channel01");
EventHub eventHub = client.newEventHub("eh01", "grpc://abc.xyz.us:7053");
channel.addEventHub(eventHub);

除了这个我迷路了。有人可以请张贴的如何做到这一点的样本?

java sdk client event-listener hyperledger
2个回答
5
投票

一旦你添加eventhub,你需要注册此事件的利斯特。请看下面的例子。

        BlockListener blockListener = new BlockListener() {         
        @Override
        public void received(BlockEvent arg0) {
            Block block = arg0.getBlock();

            System.out.println("BLock All FIelds :" + block.getAllFields());
            System.out.println("BLock Number :" + arg0.getBlockNumber());               

            System.out.println("THis is buyer Listener..");
        }
    };

    channel.registerBlockListener(blockListener);

每当块被添加到blockchain不管你就会将收到的方法写会被调用。希望这会帮助你。


0
投票

对于交易事件,你需要另一个监听器:

String chaincodeEventListenerHandle = channel.registerChaincodeEventListener(
                    Pattern.compile(".*"), Pattern.compile(Pattern.quote(EXPECTED_EVENT_NAME)),
                    (handle, blockEvent, chaincodeEvent) -> {
                        final String es = blockEvent.getPeer() != null
                                ? blockEvent.getPeer().getName()
                                : blockEvent.getEventHub().getName();
                        System.out.format(
                                "Chaincode event with handle: %s"
                                + ", thread name: %s"
                                + ", chaincode Id: %s"
                                + ", chaincode event name: %s"
                                + ", transaction id: %s"
                                + ", event payload: \"%s\""
                                + ", from eventhub: %s\n",
                                Thread.currentThread().getName(),
                                handle, 
                                chaincodeEvent.getChaincodeId(),
                                chaincodeEvent.getEventName(), 
                                chaincodeEvent.getTxId(),
                                new String(chaincodeEvent.getPayload()),
                                es);

                    });

...

 channel.unregisterChaincodeEventListener(chaincodeEventListenerHandle);
© www.soinside.com 2019 - 2024. All rights reserved.