美文网首页
区块链 hyperledger sawtooth 钱包(三) -

区块链 hyperledger sawtooth 钱包(三) -

作者: Charles_linzc | 来源:发表于2020-06-18 10:05 被阅读0次

    当一个Certification 提交到sawtooth区块链后, 通常我们需要知道Certification 最终是否提交成功,以及错误。 Sawtooth 在框架中提供了事件订阅机制。

    简单的说, 写一个程序,通过zmq像validator发送订阅消息, 订阅消息中的类型、和过滤器定义了想要接收到的消息。

    这里,我们写一个Java的独立dbsync程序,监听Certification的提交,具体更新数据库业务省略。

    项目目录结构:

    我们通过一个EventProcessor的Demo程序,来看一下Java便是Event 处理器放的方法。

    初始化方法里,我们创建一个ZmqStream对象,参数为Validtor的地址和端口(将在Docker的启动程序中声明);  注册状态默认为False表示哈没有注册。 增加一个Shutdown的结束现成,当前只打印一句消息,实际代码中,我们可以取消订阅。

    在Processor的run方法中, 我们主要完成以下事情:

    1. 创建一个subscription, 设置事件类型,增加一个事件Filter,在Filter中我们用书写的地址作为事件源,接收匹配带地址的事件。

    2. 创建一个事件请求对象,封装subscription.

    3. 使用ZMQstream发送请求,并节点结果,发送时需要设置消息类型。与Using ZMQ to Subscribe to Events 使用python代码描述的不同,这里我们不需要message wrapper, Java封装的ZMQstream会自动pack/unpack message.

    4. unpack 结果为subscription response, 判断是否订阅成功。

    5. 如果成功调用handleEvent(),进入事件接收与处理循环。

    Event handle的方法很简单, 循环监听消息,如果是指定类型则处理,不是则跳过。

    最后书写main程序,启动线程。和certProcessor类似。

    public static void main(String[] args) {

    System.out.println("start Event DBysnc !");

    EventProcessor eventProcessor=new EventProcessor(args[0]);

    new Thread(eventProcessor).start();

    }

    以下是DockerFile的配置文件:

    相关文章

      网友评论

          本文标题:区块链 hyperledger sawtooth 钱包(三) -

          本文链接:https://www.haomeiwen.com/subject/nuyyxktx.html