栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【软件工程应用与实际】(3)JDchain对事件查询及监听

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【软件工程应用与实际】(3)JDchain对事件查询及监听

2021SC@SDUSC

1 事件相关信息的获取 1.1 获取事件账户列表
GET /ledgers/{ledger}/events/user/accounts?fromIndex={fromIndex}&count={count}
参数
请求类型名称是否必需说明数据类型
pathledger账本哈希字符串
queryfromIndex查询的起始序号,默认为0数字
querycount查询返回事件账户的数量,默认最大返回值为100,小于0或大于100均返回最大可返回结果集数字
1.2 获取事件账户
GET /ledgers/{ledger}/events/user/accounts/{address}
参数
请求类型名称是否必需说明数据类型
pathledger账本哈希字符串
address账户地址事件账户地址字符串
1.3 获取事件账户总数
GET /ledgers/{ledger}/events/user/accounts/count
参数
请求类型名称是否必需说明数据类型
pathledger账本哈希字符串
1.4 获取事件名数量
GET /ledgers/{ledger}/events/user/accounts/{address}/names/count
参数
请求类型名称是否必需说明数据类型
pathledger账本哈希字符串
pathaddress事件账户地址字符串
1.5 获取事件名列表
GET /ledgers/{ledger}/events/user/accounts/{address}/names?fromIndex={fromIndex}&count={count}
参数
请求类型名称是否必需说明数据类型
pathledger账本哈希字符串
pathaddress事件账户地址字符串
queryfromIndex查询的起始序号,默认为0数字
querycount查询返回事件账户的数量,默认最大返回值为100,小于0或大于100均返回最大可返回结果集数字
1.6 获取最新事件
GET /ledgers/{ledger}/events/user/accounts/{address}/names/{event_name}/latest
参数
请求类型名称是否必需说明数据类型
pathledger账本哈希字符串
pathaddress事件账户地址字符串
pathevent_name事件名字符串
1.7 获取事件数量
GET /ledgers/{ledger}/events/user/accounts/{address}/names/{event_name}/count
参数
请求类型名称是否必需说明数据类型
pathledger账本哈希字符串
pathaddress事件账户地址字符串
pathevent_name事件名字符串
1.8 获取事件列表
GET /ledgers/{ledger}/events/user/accounts/{address}/names/{event_name}?fromSequence={fromSequence}&count={count}
参数
请求类型名称是否必需说明数据类型
pathledger账本哈希字符串
pathaddress事件账户地址字符串
pathevent_name事件名字符串
queryfromSequence查询的起始序号,默认为0数字
querycount查询返回事件的数量,默认最大返回值为100,小于0或大于100均返回最大可返回结果集数字
2事件的监听 2.1 事件的发布
TransactionTemplate txTemp = blockchainService.newTransaction(ledger);

// sequence是针对此消息name的序列严格递增,初始为-1,可通过查询事件名下最新事件获取序列参数
txTemp.eventAccount(Bytes.frombase58("LdeNiAPuZ5tpYZVrrbELJNjqdvB51PBpNd8QA")).publish("topic", "content", -1);

PreparedTransaction ptx = txTemp.prepare();
ptx.sign(adminKey);
TransactionResponse response = ptx.commit();
2.2. 监听事件
// 监听系统事件,目前仅有新区快产生事件
blockchainService.monitorSystemEvent(ledger,
        SystemEvent.NEW_BLOCK_CREATED, 0, (eventMessages, eventContext) -> {
            for (Event eventMessage : eventMessages) {
                // content中存放的是当前链上最新高度
                System.out.println("New block:" + eventMessage.getSequence() + ":" + BytesUtils.toLong(eventMessage.getContent().getBytes().toBytes()));
            }
        });

// 监听用户自定义事件
blockchainService.monitorUserEvent(ledger, "LdeNr7H1CUbqe3kWjwPwiqHcmd86zEQz2VRye", "sample-event", 0, (eventMessage, eventContext) -> {

    BytesValue content = eventMessage.getContent();
    switch (content.getType()) {
        case TEXT:
        case XML:
        case JSON:
            System.out.println(eventMessage.getName() + ":" + eventMessage.getSequence() + ":" + content.getBytes().toUTF8String());
            break;
        case INT64:
        case TIMESTAMP:
            System.out.println(eventMessage.getName() + ":" + eventMessage.getSequence() + ":" + BytesUtils.toLong(content.getBytes().toBytes()));
            break;
        default: // byte[], Bytes
            System.out.println(eventMessage.getName() + ":" + eventMessage.getSequence() + ":" + content.getBytes().tobase58());
            break;
    }
});
  |
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/683835.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号