CN110209381A - 基于区块链的sdk快速集成方法、装置、设备及存储介质 - Google Patents

基于区块链的sdk快速集成方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN110209381A
CN110209381A CN201910475206.2A CN201910475206A CN110209381A CN 110209381 A CN110209381 A CN 110209381A CN 201910475206 A CN201910475206 A CN 201910475206A CN 110209381 A CN110209381 A CN 110209381A
Authority
CN
China
Prior art keywords
sdk
block chain
theme
consumer
fast integration
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910475206.2A
Other languages
English (en)
Inventor
卓燕坤
邓翔
陈杰
马征
申宁贝妮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
WeBank Co Ltd
Original Assignee
WeBank Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by WeBank Co Ltd filed Critical WeBank Co Ltd
Priority to CN201910475206.2A priority Critical patent/CN110209381A/zh
Publication of CN110209381A publication Critical patent/CN110209381A/zh
Priority to PCT/CN2020/079997 priority patent/WO2020238344A1/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于区块链的SDK快速集成方法,涉及金融科技领域,该方法包括:在业务***接收到启动指令时,获取预设格式的配置文件;基于配置文件,创建以太坊web3j实例,其中,所述web3j实例提供区块链API接口;确定配置文件对应的主题配置项;若主题配置项为消费者主题配置项,则通过SDK初始化消费者实例,并订阅联盟链节点上的消费者主题事件;若主题配置项为生产者主题配置项,则通过SDK初始化生产者实例,以供业务***调用API接口发布生产者主题事件。本发明还公开了一种基于区块链的SDK快速集成装置、设备和存储介质。本发明通过预设格式的配置文件,初始化消费者和生产者在SDK中初始化处理,有效实现SDK的快速集成,简化了接入成本。

Description

基于区块链的SDK快速集成方法、装置、设备及存储介质
技术领域
本发明涉及区块链(Block chain)技术领域,尤其涉及金融行业的基于区块链的SDK快速集成方法、装置、设备及存储介质。
背景技术
随着计算机技术的发展,越来越多的技术(如分布式、区块链Block chain、大数据、人工智能等)应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,越来越多的技术应用于金融行业。现有技术中,基于java连接区块链的web3j sdk工具包,集成相关合约事件(维护topic、和event事件的合约),内部封装消息上链和拉取等操作,对外提供发布和订阅接口,让应用***显示调用,进行topic消息发送和消息监听。
然而,现有技术中,应用工程必须引入application Context.xml文件,通过spring组件加载该文件初始化web3j环境,软件开发工具包SDK的集成度低,导致发布和订阅事件的接入成本高。
发明内容
本发明的主要目的在于提出一种基于区块链的SDK快速集成方法、装置、设备及存储介质,旨在解决现有技术中的集成度低,导致发布和订阅事件的接入成本高的问题。
为实现上述目的,本发明提供一种基于区块链的SDK快速集成方法,所述基于区块链的SDK快速集成方法包括如下步骤:
在业务***接收到启动指令时,获取预设格式的配置文件;
基于所述配置文件,创建以太坊web3j实例,其中,所述web3j实例提供区块链API接口;
确定所述配置文件对应的主题配置项;
若所述主题配置项为消费者主题配置项,则通过软件开发工具包SDK初始化消费者实例,并订阅联盟链节点上的消费者主题事件;
若所述主题配置项为生产者主题配置项,则通过所述SDK初始化生产者实例,以供所述业务***调用所述API接口发布生产者主题事件。
优选地,在业务***接收到软件开发工具包SDK的启动指令时,获取预设格式的配置文件的步骤之前,所述基于区块链的SDK快速集成方法还包括:
通过业务应用基于业务场景及所述SDK配置信息,得到配置文件。
优选地,所述基于所述配置文件,创建以太坊web3j实例的步骤包括:
通过所述SDK解析所述配置文件,得到所述联盟链节点的ID;
基于所述联盟链节点的ID,构建所述SDK与对应的联盟链之间的通信链路,以构建所述web3j实例。
优选地,所述订阅联盟链节点上的消费者主题事件的步骤还包括:
基于所述联盟链节点对所述消费者主题事件进行监听得到消息数据;
对所述消息数据进行解析得到消息通知;
通过消息分发器将所述消息通知分发至所述消费者主题配置项对应的业务函数中,以供所述业务函数对所述消息通知进行处理。
优选地,所述消费者主题事件包括第一消费者事件以及第二消费者事件;所述基于所述联盟链节点对所述消费者主题事件进行监听得到消息数据的步骤包括:
基于所述联盟链节点对所述第一消费者事件进行监听得到第一数据,且对所述第二消费者事件进行缓存处理。
优选地,所述API接口为发布消息接口;所述若所述主题配置项为生产者主题配置项,则通过所述SDK初始化生产者实例,以供所述业务***调用所述API接口发布生产者主题事件的步骤包括:
若所述主题配置项为生产者主题配置项,则通过所述SDK解析所述配置文件,得到主题合约;
调用所述主题合约对应的所述发布消息接口,发送生产者主题事件至所述联盟链节点。
此外,为实现上述目的,本发明还提供一种基于区块链的SDK快速集成装置,所述基于区块链的SDK快速集成装置包括:
获取模块,用于在业务***接收到启动指令时,获取预设格式的配置文件;
构建模块,用于基于所述配置文件,创建以太坊web3j实例,其中,所述web3j实例提供区块链API接口;
确定模块,用于确定所述配置文件对应的主题配置项;
订阅模块,用于若所述主题配置项为消费者主题配置项,则通过软件开发工具包SDK初始化消费者实例,并订阅联盟链节点上的消费者主题事件;
发布模块,用于若所述主题配置项为生产者主题配置项,则通过所述SDK初始化生产者实例,以供所述业务***调用所述API接口发布生产者主题事件。
优选地,所述基于区块链的SDK快速集成装置还包括:
配置模块,用于通过业务应用基于业务场景及所述SDK配置信息,得到配置文件。
优选地,所述构建模块还用于:
通过所述SDK解析所述配置文件,得到所述联盟链节点的ID;
基于所述联盟链节点的ID,构建所述SDK与对应的联盟链之间的通信链路,以构建所述web3j实例。
优选地,所述订阅模块还用于:
基于所述联盟链节点对所述消费者主题事件进行监听得到消息数据;
对所述消息数据进行解析得到消息通知;
通过消息分发器将所述消息通知分发至所述消费者主题配置项对应的业务函数中,以供所述业务函数对所述消息通知进行处理。
优选地,所述消费者主题事件的数量为多个,分别为第一消费者事件、第二消费者事件;所述订阅模块还用于:
基于所述联盟链节点对所述第一消费者事件进行监听得到第一数据,且对所述第二消费者事件进行缓存处理。
此外,为实现上述目的,本发明还提供一种基于区块链的SDK快速集成设备,所述基于区块链的SDK快速集成设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于区块链的SDK快速集成程序,所述基于区块链的SDK快速集成程序被所述处理器执行时实现如上所述的基于区块链的SDK快速集成方法的步骤。
此外,为实现上述目的,本发明还提供一种可读存储介质,所述可读存储介质上存储有基于区块链的SDK快速集成程序,所述基于区块链的SDK快速集成程序被处理器执行时实现如上所述的基于区块链的SDK快速集成方法的步骤。
本发明提出的基于区块链的SDK快速集成方法,通过预设格式的配置文件,有效去除现有技术的application.xml的文件依赖,使得软件开发工具包SDK更通用,且扩展性强;并且,基于配置文件构建的web3j实例,支持多条联盟链;再者,在确定了主题配置项后,通过同一个主题的生产角色、消费角色配置,实现消息发布和/或订阅消息。与现有技术中需要业务***初始化消费者实例和生产者实例的方式相比,将初始化消费者和生产者在SDK中初始化处理,有效实现SDK的快速集成,简化了接入成本。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图;
图2为本发明基于区块链的SDK快速集成方法第一实施例的流程示意图;
图3为本发明基于区块链的SDK快速集成方法第一实施例的区块链节点发布、订阅事件的示意图;
图4为本发明基于区块链的SDK快速集成方法第一实施例的构建web3j实例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图。
本发明实施例基于区块链的SDK快速集成设备可以是PC机或服务器设备。
如图1所示,该基于区块链的SDK快速集成设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及基于区块链的SDK快速集成程序。
在图1所示的设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的基于区块链的SDK快速集成程序,并执行下述基于区块链的SDK快速集成方法各个实施例中的操作。
基于上述硬件结构,提出本发明基于区块链的SDK快速集成方法实施例。
参照图2,图2为本发明基于区块链的SDK快速集成方法第一实施例的流程示意图,所述方法包括:
步骤S10,在业务***接收到启动指令时,获取预设格式的配置文件;
本实施例中,SDK(Software Development Kit,软件开发工具包)一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作***等建立应用软件时的开发工具的集合。在业务***接收到软件开发工具包SDK的启动指令时,获取预设格式的配置文件,其中,启动指令可以是启动业务***时触发的,在业务***启动的过程中,会对获取的配置文件进行读取。
预设格式的配置文件可以包括:SDK功能开关、区块链节点ip:port,主题topic合约地址,区块链证书文件路径,机构id,消费主题topic,生产主题topic等一个或多个信息,多个业务机构之间通过key添加orgid前缀独立配置。如:
aaaa.weevent.consumer.topic=*****
bbbb.weevent.consumer.topic=*****
aaa及bbb分别为业务机构名称(如银行机构、保险机构等金融机构),能够灵活区分业务机构。如图3所示,图3是区块链节点发布、订阅事件的示意图。WeEvent提供的是一套基于区块链的Publish/Subscribe功能集合。Event(事件)是业务中的一个消息,可以是字符型的,如Json或者XML。也可以是二进制类型,如协议缓冲结构。本案的WeEvent支持的事件,内容最大长度为10KB。Topic(主题)结构相同的一类事件,逻辑上定义归属于同一个Topic。事件处理和维护时,Topic之间互相隔离。Event Broker是区块链节点中间件,Publish Event(发布事件),Producer通过publish接口往某个Topic上发布一个事件,发布成功的事件将永久存储在金融区块链FISCO-BCOS上。事件永不丢失,不可篡改,支持事后审核。Subscribe Event(订阅事件)中,消费者Consumer订阅监听某个Topic上的事件,当有事件发生时会收到消息通知,可以通过特殊的标志位OFFSET_FIRST,获取该Topic从创建开始的所有事件。Unsubscribe Event(取消订阅事件),取消一个订阅动作,后续不再会收到事件通知。
现有技术中,应用工程必须引入application Context.xml文件,通过spring组件加载该文件初始化web3j环境,现在大多数java应用基本都是基于spring-boot框架搭建,以后缀为properties的属性文件,application.xml的配置会固定具体的内容实例,并且,application.xml的方式无法实现多条联盟链。
本方案业务应用根据自己的业务场景配置相关信息,具体包括:配置相关区块链节点信息、接入证书、topic名称,声明topic对应的业务接口function。在扩展业务***时,只需要增加配置项进行配置,即可灵活配置内容实例,使得SDK具有良好的通用性及可扩展性。
步骤S20,基于所述配置文件,创建以太坊web3j实例,其中,所述web3j实例提供区块链API接口;
该步骤中,基于所述配置文件,通过软件开发工具包SDK构建与联盟链节点通信的以太坊web3j实例,并且,一个业务机构对应一个web3j实例,并且,通过软件开发工具包SDK基于联盟链节点初始化所述web3j实例,其中,所述web3j实例提供区块链API接口。而且,维持SDK与联盟链节点之间通信的方式为:业务应用与区块链节点创建长链接,会起一个心跳线程,链接失效会自动重连。
如图4所示,图4是构建web3j实例的流程示意图,在***启动过程中,获取配置文件,动态生成各个业务机构连接区块链节点的web3j环境,具体地,基于配置文件,创建以太坊web3j实例,得到web3j环境;根据主题topic配置初始化消费者实例consumer,且初始化生产者实例producer;并且,通过web3j环境,分别建立各个机构的联盟链从而得到web3j实例,例如分别建立与机构A的联盟链之间的通讯,与机构B的联盟链之间的通讯,与机构C的联盟链之间的通讯,从而得到web3j实例。
web3j实例提供区块链api调用接口的,生产者实例、消费者实例都是依赖web3j实例api调用接口,通过生产者实例、消费者实例,集成了一系列逻辑操作,实现一种订阅、发布模式。
基于配置文件,通过SDK构建与联盟链节点通信的以太坊web3j实例,能够实现多条联盟链,如与机构A的联盟链,与机构B的联盟链,与机构C的联盟链,有效规避现有技术application.xml的方式无法支持多联盟链的问题。
步骤S30,确定所述配置文件对应的主题配置项;
该步骤中,确定配置文件的主题配置项,具体为:通过所述SDK解析所述配置文件。根据配置文件中事先定好的配置项确定主题配置项。
需要说明的是,SDK解析所述配置文件,获取的不止是主题配置项的主题名称,还包括联盟链的id,ip端口和通讯证书等。
比如:配置文件有配置项:
{orgid}.weevent.consumer.topic={topicname}
{orgid}.weevent.producer.topic={topicname}。
那么,由上述配置项得知,主题配置项{orgid}.weevent.consumer.topic为consumer配置项,则确定配置文件中配置有消费者主题配置项,且对应消费者实例,可进行订阅事件;主题配置项{orgid}.weevent.producer.topic为producer配置项,则确定配置文件中配置有生产者主题配置项,且对应生产者实例,可进行发布事件。
通过对配置文件进行解析,获取到具体的业务配置项对应的值,从而确定是消费者主题配置项或生产者主题配置项。
步骤S40,若所述主题配置项为消费者主题配置项,则通过软件开发工具包SDK初始化消费者实例,并订阅联盟链节点上的消费者主题事件。
该步骤中,通过软件开发工具包SDK初始化消费者实例相当于通过软件开发工具包SDK联盟链节点初始化消费者实例,订阅联盟链节点上的消费者主题事件具体为:基于所述联盟链节点对所述消费者主题事件进行监听得到消息数据;对所述消息数据进行解析得到消息通知;通过消息分发器将所述消息通知分发至所述消费者主题配置项对应的业务函数中,以供所述业务函数对所述消息通知进行处理。在定义了一个主题事件topic后,就有一个定时任务拉取块高数据解析,分发给主题topic声明的业务函数处理的过程。
具体为:SDK定时获取当前区块链块高为blockHeight,SDK已拉取数据的块高lastBlock,当前需要拉取的块高currentBlockNum=lastBlocNum+1,当currentBlockNum<=blockHeight,SDK获取链上第currentBlockNum块的数据,解析数据内容,根据数据内容所属主题进行分发通知。
由于消费者实例是通过SDK进行初始化,与现有技术需要业务***初始化消费者实例的方式相比,有效实现SDK的快速集成。
步骤S50,若所述主题配置项为生产者主题配置项,则通过所述SDK初始化生产者实例,以供所述业务***调用所述API接口发布生产者主题事件。
该步骤中,通过所述SDK初始化生产者实例相当于通过所述SDK联盟链节点初始化生产者实例,发布生产者主题事件具体为:SDK调用主题topic合约定义的发布消息接口publish WeEvent,发送消息上链,是业务***主动调用发布。
由于生产者实例也是通过SDK进行初始化,与现有技术需要业务***初始化生产者实例的方式相比,有效实现SDK的快速集成。
本发明提出的基于区块链的SDK快速集成方法,通过预设格式的配置文件,有效去除现有技术的application.xml的文件依赖,使得软件开发工具包SDK更通用,且扩展性强;并且,基于配置文件构建的web3j实例,支持多条联盟链;再者,在确定了主题配置项后,通过同一个主题的生产角色、消费角色配置,实现消息发布和/或订阅消息。与现有技术中需要业务***初始化消费者实例和生产者实例的方式相比,将初始化消费者和生产者在SDK中初始化处理,有效实现SDK的快速集成,简化了接入成本。
进一步地,在步骤S10之前,所述基于区块链的SDK快速集成方法还可以包括:
通过业务应用基于业务场景及所述SDK配置信息,得到配置文件。
在本实施例中,业务***根据SDK定义的配置项填写好对应的配置值,SDK直接读取本地文件得到。
现有技术中,application Context.xml文件是由spring组件加载的基础配置文件,里面声明配置了各种上下文实例。这种模式让业务***强制依赖了spring套件,另外是一种固定结构实例的配置,后续不好进行升级扩展。
本案中,业务***根据业务场景及SDK进行场景信息配置,业务场景如消费者和生产者,根据SDK定义的配置项填写好对应的配置值,得到预设格式的配置文件,预设格式的配置文件可以包括:SDK功能开关、区块链节点ip:port,主题topic合约地址,区块链证书文件路径,机构id,消费主题topic,生产主题topic等信息,多个业务机构之间通过key添加orgid前缀独立配置,尤其是,通过Key=value的格式存储的配置文件,SDK可以动态生成各种上下文实例,对应用***来说,只需要按提供的配置项配置,SDK内部自己控制去初始化上下文实例,而且Key=value的配置文件是各种程序应用更普遍通用的配置模式。
通过Key=value的格式存储的配置文件,在扩展业务***时,只需要增加配置项进行配置,即可灵活配置内容实例,使得SDK具有良好的通用性及可扩展性。
进一步地,步骤S20可以包括:
通过所述SDK解析所述配置文件,得到所述联盟链节点的ID;
基于所述联盟链节点的ID,构建所述SDK与对应的联盟链之间的通信链路,以构建所述web3j实例。
在本实施例中,SDK对配置文件进行解析时,得到联盟链节点的ID,并且,建立SDK与对应的联盟链之间的通信链路,进而实现web3j实例的构建。其中,维持通信的方式为:业务应用与区块链节点创建长链接,会起一个心跳线程,链接失效会自动重连。
比如:配置文件有配置项:
{orgid}.weevent.consumer.topic={topicname}
{orgid}.weevent.producer.topic={topicname}。
那么,解析后,得到主题配置项{orgid}.weevent.consumer.topic为consumer配置项,确定配置文件中配置有消费者主题配置项,且对应消费者实例,可进行订阅事件;主题配置项{orgid}.weevent.producer.topic为producer配置项,确定配置文件中配置有生产者主题配置项,且对应生产者实例,可进行发布事件。
当联盟链节点的ID有多个时,可实现多条联盟链与SDK的通信,得到多个web3j实例,并且,一个web3j实例对应一个业务机构,有效支持多链场景。
通过对配置文件进行解析,并且对其中的主题配置项进行判断,从而得到具体的业务配置项,针对具体的业务配置项,进行消息通讯。
进一步地,基于本发明基于区块链的SDK快速集成方法的第一实施例,提出本发明基于区块链的SDK快速集成方法的第二实施例;步骤S50可以包括:基于所述联盟链节点对所述消费者主题事件进行监听得到消息数据;
对所述消息数据进行解析得到消息通知;
通过消息分发器将所述消息通知分发至所述消费者主题配置项对应的业务函数中,以供所述业务函数对所述消息通知进行处理。
在本实施例中,订阅联盟链节点上的消费者主题事件具体为:基于所述联盟链节点对所述消费者主题事件进行监听得到消息数据;对所述消息数据进行解析得到消息通知;通过消息分发器将所述消息通知分发至所述消费者主题配置项对应的业务函数中,以供所述业务函数对所述消息通知进行处理。在定义了一个主题事件topic后,就有一个定时任务拉取块高数据解析,分发给主题topic声明的业务函数处理的过程。
具体为:SDK定时获取当前区块链块高为blockHeight,SDK已拉取数据的块高lastBlock,当前需要拉取的块高currentBlockNum=lastBlocNum+1,当currentBlockNum<=blockHeight,SDK获取链上第currentBlockNum块的数据,解析数据内容,根据数据内容所属主题进行分发通知。
现有技术中,一个子***在多应用实例下,订阅同一个主题topic消息,当有主题信息时,每个实例都会拉取到该消息,造成业务***重复处理消息,需要业务***自行解决去重处理。
本发明中,业务应用只需关注和实现对应的topic声明的业务接口,其它实现如消息去重,消息标志位存储等通用流程由消息分发器统一处理。
订阅主题topic的消息统一进入消息分发器里,消息分发器会通过redis中间件进行消息去重,即默认redis方式实现,接入者只需在分发器里注入自己的redis组件,也支持自定义实现方式,可以在提供的接口基础类(interface IEventHelp)里声明,从而保证只有一个机构实例可以执行该topic消息,分发器根据消息所属业务机构id,topic名称,再把消息分配到对应topic声明的业务函数,最后分发器再异步对已消费的消息进行记录。
进一步地,所述消费者主题事件的数量为多个,分别为第一消费者事件、第二消费者事件;步骤S40还可以包括:
基于所述联盟链节点对所述第一消费者事件进行监听得到第一数据,且对所述第二消费者事件进行缓存处理。
在本实施例中,当消费者主题事件的数量为多个时,如包括第一消费者事件、第二消费者事件……,在对消费者主题事件进行监听时,会先对第一消费者事件进行监听,并且,将第二消费者事件及除第一消费者事件以外的事件进行缓存处理,当内存有消息,会同步处理第二消费者事件。
比如,有topicA、topicB、topicC三个场景,执行顺序是:topicA先请求链上拉取该区块数据,对其它topicB、topicC消息进行缓存。topicB、topicC等待topicA处理完,直接从内存获取消息返回。
现有技术的处理方式为:当业务应用配置多个consumer topic场景下,每一个区块,每个topic都会请求链上一次拉取该区块数据,解析数据然后返回属于自己的topic消息,导致效率低下。
本案通过对第二消费者事件进行缓存,避免每个主题拉取消息都会请求链上某一个区块全部数据的问题,从而达到效率优化,实现对于多个主题场景下拉取消息处理。
进一步地,所述API接口为发布消息接口;步骤S50包括:
通过所述SDK解析所述配置文件,得到主题合约;
调用所述主题合约对应的所述发布消息接口,发送生产者主题事件至所述联盟链节点。
本实施例中,发布生产者主题事件具体为:SDK调用主题topic合约定义的发布消息接口publishWeEvent,发送消息上链,是业务***主动调用发布,在主题事件发布成功时,该主题事件永久存储在FISCO-BCOS区块链上,且该主题事件永不丢失,不可篡改,并支持事后审核。
由于生产者实例也是通过SDK进行初始化,与现有技术需要业务***初始化生产者实例的方式相比,有效实现SDK的快速集成,并且,在发布事件时,由于SDK的快速集成,简化了接口调用方式。
本发明还提供一种基于区块链的SDK快速集成装置。本发明所述基于区块链的SDK快速集成装置包括:
获取模块,用于在业务***接收到启动指令时,获取预设格式的配置文件;
构建模块,用于基于所述配置文件,创建以太坊web3j实例,其中,所述web3j实例提供区块链API接口;
确定模块,用于确定所述配置文件对应的主题配置项;
订阅模块,用于若所述主题配置项为消费者主题配置项,则通过软件开发工具包SDK初始化消费者实例,并订阅联盟链节点上的消费者主题事件;
发布模块,用于若所述主题配置项为生产者主题配置项,则通过所述SDK初始化生产者实例,以供所述业务***调用所述API接口发布生产者主题事件。
进一步地,所述基于区块链的SDK快速集成装置还包括:
配置模块,用于通过业务应用基于业务场景及所述SDK配置信息,得到配置文件。
进一步地,所述构建模块还用于:
通过所述SDK解析所述配置文件,得到所述联盟链节点的ID;
基于所述联盟链节点的ID,构建所述SDK与对应的联盟链之间的通信链路,以构建所述web3j实例。
进一步地,所述订阅模块还用于:
基于所述联盟链节点对所述消费者主题事件进行监听得到消息数据;
对所述消息数据进行解析得到消息通知;
通过消息分发器将所述消息通知分发至所述消费者主题配置项对应的业务函数中,以供所述业务函数对所述消息通知进行处理。
进一步地,所述消费者主题事件的数量为多个,分别为第一消费者事件、第二消费者事件;所述订阅模块还用于:
基于所述联盟链节点对所述第一消费者事件进行监听得到第一数据,且对所述第二消费者事件进行缓存处理。
本发明还提供一种计算机可读存储介质。
本发明计算机可读存储介质上存储有基于区块链的SDK快速集成程序,所述基于区块链的SDK快速集成程序被处理器执行时实现如上所述的基于区块链的SDK快速集成方法的步骤。
其中,在所述处理器上运行的基于区块链的SDK快速集成程序被执行时所实现的方法可参照本发明基于区块链的SDK快速集成方法各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者***不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者***所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者***中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台基于区块链的SDK快速集成设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (13)

1.一种基于区块链的SDK快速集成方法,其特征在于,所述基于区块链的SDK快速集成方法包括如下步骤:
在业务***接收到启动指令时,获取预设格式的配置文件;
基于所述配置文件,创建以太坊web3j实例,其中,所述web3j实例提供区块链API接口;
确定所述配置文件对应的主题配置项;
若所述主题配置项为消费者主题配置项,则通过软件开发工具包SDK初始化消费者实例,并订阅联盟链节点上的消费者主题事件;
若所述主题配置项为生产者主题配置项,则通过所述SDK初始化生产者实例,以供所述业务***调用所述API接口发布生产者主题事件。
2.如权利要求1所述的基于区块链的SDK快速集成方法,其特征在于,在业务***接收到软件开发工具包SDK的启动指令时,获取预设格式的配置文件的步骤之前,所述基于区块链的SDK快速集成方法还包括:
通过业务应用基于业务场景及所述SDK配置信息,得到配置文件。
3.如权利要求1所述的基于区块链的SDK快速集成方法,其特征在于,所述基于所述配置文件,创建以太坊web3j实例的步骤包括:
通过所述SDK解析所述配置文件,得到所述联盟链节点的ID;
基于所述联盟链节点的ID,构建所述SDK与对应的联盟链之间的通信链路,以构建所述web3j实例。
4.如权利要求1所述的基于区块链的SDK快速集成方法,其特征在于,所述订阅联盟链节点上的消费者主题事件的步骤还包括:
基于所述联盟链节点对所述消费者主题事件进行监听得到消息数据;
对所述消息数据进行解析得到消息通知;
通过消息分发器将所述消息通知分发至所述消费者主题配置项对应的业务函数中,以供所述业务函数对所述消息通知进行处理。
5.如权利要求4所述的基于区块链的SDK快速集成方法,其特征在于,所述消费者主题事件包括第一消费者事件以及第二消费者事件;所述基于所述联盟链节点对所述消费者主题事件进行监听得到消息数据的步骤包括:
基于所述联盟链节点对所述第一消费者事件进行监听得到第一数据,且对所述第二消费者事件进行缓存处理。
6.如权利要求1至5中任一项所述的基于区块链的SDK快速集成方法,其特征在于,所述API接口为发布消息接口;所述若所述主题配置项为生产者主题配置项,则通过所述SDK初始化生产者实例,以供所述业务***调用所述API接口发布生产者主题事件的步骤包括:
若所述主题配置项为生产者主题配置项,则通过所述SDK解析所述配置文件,得到主题合约;
调用所述主题合约对应的所述发布消息接口,发送生产者主题事件至所述联盟链节点。
7.一种基于区块链的SDK快速集成装置,其特征在于,所述基于区块链的SDK快速集成装置包括:
获取模块,用于在业务***接收到启动指令时,获取预设格式的配置文件;
构建模块,用于基于所述配置文件,创建以太坊web3j实例,其中,所述web3j实例提供区块链API接口;
确定模块,用于确定所述配置文件对应的主题配置项;
订阅模块,用于若所述主题配置项为消费者主题配置项,则通过软件开发工具包SDK初始化消费者实例,并订阅联盟链节点上的消费者主题事件;
发布模块,用于若所述主题配置项为生产者主题配置项,则通过所述SDK初始化生产者实例,以供所述业务***调用所述API接口发布生产者主题事件。
8.如权利要求6所述的基于区块链的SDK快速集成装置,其特征在于,所述基于区块链的SDK快速集成装置还包括:
配置模块,用于通过业务应用基于业务场景及所述SDK配置信息,得到配置文件。
9.如权利要求6所述的基于区块链的SDK快速集成装置,其特征在于,所述构建模块还用于:
通过所述SDK解析所述配置文件,得到所述联盟链节点的ID;
基于所述联盟链节点的ID,构建所述SDK与对应的联盟链之间的通信链路,以构建所述web3j实例。
10.如权利要求7-9中任一项所述的基于区块链的SDK快速集成装置,其特征在于,所述订阅模块还用于:
基于所述联盟链节点对所述消费者主题事件进行监听得到消息数据;
对所述消息数据进行解析得到消息通知;
通过消息分发器将所述消息通知分发至所述消费者主题配置项对应的业务函数中,以供所述业务函数对所述消息通知进行处理。
11.如权利要求10所述的基于区块链的SDK快速集成装置,其特征在于,所述消费者主题事件的数量为多个,分别为第一消费者事件、第二消费者事件;所述订阅模块还用于:
基于所述联盟链节点对所述第一消费者事件进行监听得到第一数据,且对所述第二消费者事件进行缓存处理。
12.一种基于区块链的SDK快速集成设备,其特征在于,所述基于区块链的SDK快速集成设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于区块链的SDK快速集成程序,所述基于区块链的SDK快速集成程序被所述处理器执行时实现如权利要求1至6中任一项所述的基于区块链的SDK快速集成方法的步骤。
13.一种存储介质,其特征在于,所述存储介质上存储有基于区块链的SDK快速集成程序,所述基于区块链的SDK快速集成程序被处理器执行时实现如权利要求1至6中任一项所述的基于区块链的SDK快速集成方法的步骤。
CN201910475206.2A 2019-05-31 2019-05-31 基于区块链的sdk快速集成方法、装置、设备及存储介质 Pending CN110209381A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910475206.2A CN110209381A (zh) 2019-05-31 2019-05-31 基于区块链的sdk快速集成方法、装置、设备及存储介质
PCT/CN2020/079997 WO2020238344A1 (zh) 2019-05-31 2020-03-18 基于区块链的sdk快速集成方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910475206.2A CN110209381A (zh) 2019-05-31 2019-05-31 基于区块链的sdk快速集成方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN110209381A true CN110209381A (zh) 2019-09-06

Family

ID=67790364

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910475206.2A Pending CN110209381A (zh) 2019-05-31 2019-05-31 基于区块链的sdk快速集成方法、装置、设备及存储介质

Country Status (2)

Country Link
CN (1) CN110209381A (zh)
WO (1) WO2020238344A1 (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110162559A (zh) * 2019-04-13 2019-08-23 山东公链信息科技有限公司 一种基于通用json同步和异步数据api接口调用的区块链处理方法
CN111010450A (zh) * 2019-12-25 2020-04-14 安徽兆尹信息科技股份有限公司 一种用于fisco bcos平台的客户端链上数据下载方法
CN111309551A (zh) * 2020-02-10 2020-06-19 北京达佳互联信息技术有限公司 一种确定事件监控sdk集成正确的方法及装置
CN111861381A (zh) * 2020-06-28 2020-10-30 深圳市中农易讯信息技术有限公司 多资金渠道的接入方法及***
WO2020238344A1 (zh) * 2019-05-31 2020-12-03 深圳前海微众银行股份有限公司 基于区块链的sdk快速集成方法、装置、设备及存储介质
CN112671878A (zh) * 2020-12-17 2021-04-16 杭州趣链科技有限公司 一种区块链的信息订阅方法、装置、服务器和存储介质
CN112669157A (zh) * 2020-12-30 2021-04-16 深圳前海微众银行股份有限公司 基于区块链的交易方法、装置、***与可读存储介质
CN113301132A (zh) * 2021-05-12 2021-08-24 苏州域乎区块链科技有限公司 一种基于联盟链的交易订阅***及方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170346639A1 (en) * 2016-05-24 2017-11-30 Business Information Exchange System Corp. Public Key Infrastructure based on the Public Certificates Ledger
US10552601B2 (en) * 2017-01-18 2020-02-04 Red Hat, Inc. Deferred subscription activation using blockchain
US20200294039A1 (en) * 2017-04-25 2020-09-17 The Bank Of Nova Scotia Retail blockchain method and apparatus
CN107767229A (zh) * 2017-10-14 2018-03-06 董富坤 一种透明的商业模式
CN108566375A (zh) * 2018-03-12 2018-09-21 深圳壹账通智能科技有限公司 基于区块链的多端间消息通信的方法、终端及存储介质
CN109067810A (zh) * 2018-10-22 2018-12-21 中链科技有限公司 一种基于区块链的分布式消息保护方法和保护装置
CN109408753A (zh) * 2018-10-28 2019-03-01 北京工业大学 一种基于区块链溯源***的农场数据展示平台
CN110209381A (zh) * 2019-05-31 2019-09-06 深圳前海微众银行股份有限公司 基于区块链的sdk快速集成方法、装置、设备及存储介质

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110162559A (zh) * 2019-04-13 2019-08-23 山东公链信息科技有限公司 一种基于通用json同步和异步数据api接口调用的区块链处理方法
CN110162559B (zh) * 2019-04-13 2020-07-10 山东公链信息科技有限公司 一种基于通用json同步和异步数据api接口调用的区块链处理方法
WO2020238344A1 (zh) * 2019-05-31 2020-12-03 深圳前海微众银行股份有限公司 基于区块链的sdk快速集成方法、装置、设备及存储介质
CN111010450A (zh) * 2019-12-25 2020-04-14 安徽兆尹信息科技股份有限公司 一种用于fisco bcos平台的客户端链上数据下载方法
CN111010450B (zh) * 2019-12-25 2022-01-28 安徽兆尹信息科技股份有限公司 一种用于fisco bcos平台的客户端链上数据下载方法
CN111309551A (zh) * 2020-02-10 2020-06-19 北京达佳互联信息技术有限公司 一种确定事件监控sdk集成正确的方法及装置
CN111309551B (zh) * 2020-02-10 2023-08-08 北京达佳互联信息技术有限公司 一种确定事件监控sdk集成正确的方法及装置
CN111861381A (zh) * 2020-06-28 2020-10-30 深圳市中农易讯信息技术有限公司 多资金渠道的接入方法及***
CN111861381B (zh) * 2020-06-28 2024-04-09 深圳市中农易讯信息技术有限公司 多资金渠道的接入方法及***
CN112671878A (zh) * 2020-12-17 2021-04-16 杭州趣链科技有限公司 一种区块链的信息订阅方法、装置、服务器和存储介质
CN112669157A (zh) * 2020-12-30 2021-04-16 深圳前海微众银行股份有限公司 基于区块链的交易方法、装置、***与可读存储介质
CN113301132A (zh) * 2021-05-12 2021-08-24 苏州域乎区块链科技有限公司 一种基于联盟链的交易订阅***及方法

Also Published As

Publication number Publication date
WO2020238344A1 (zh) 2020-12-03

Similar Documents

Publication Publication Date Title
CN110209381A (zh) 基于区块链的sdk快速集成方法、装置、设备及存储介质
US20140351829A1 (en) System and method for processing messages in a service-oriented pipeline architecture
JP5046161B2 (ja) ネットワーク・エッジ・コンピューティング向けのアプリケーション分割
US9264518B2 (en) Request and response decoupling via pluggable transports in a service oriented pipeline architecture for a request response message exchange
CN104115142B (zh) 用于书签同步的特定于设备的文件夹
CN108337127B (zh) 应用性能监控方法、***、终端及计算机可读存储介质
CN111064626B (zh) 配置更新方法、装置、服务器及可读存储介质
US20140229533A1 (en) Client-side network page generation
CN110300067A (zh) 队列调整方法、装置、设备及计算机可读存储介质
CN108600331A (zh) 交互界面呈现方法、客户端、终端及***
CN112052001B (zh) App客户端的ui动态显示设计架构、方法、设备及存储介质
CN103646015B (zh) 发送、接收以及传输xml报文的方法和***
CN113254235A (zh) 一种多测试环境下的消息传递方法及装置
CN113760230A (zh) 业务处理方法和装置
CN107870816A (zh) 一种用于图像处理和存储的方法及装置
CN110825538A (zh) 一种基于mq可自定义数据类型动态进行数据交互的方法
CN115811481A (zh) 一种交互服务测试方法、装置、计算机设备及存储介质
CN111158931A (zh) 一种针对Kafka分区的数据动态均衡方法、装置及存储介质
CN110264035A (zh) 工作流程的配置方法、装置、终端和存储介质
CN110147294A (zh) 调试信息的获取方法、装置、终端及计算机可读存储介质
CN113268272B (zh) 基于私有云的应用交付方法、装置及***
CN109656536A (zh) 一种推送模块组件化的方法及客户端
CN113542217A (zh) 一种服务订阅***
CN113722022A (zh) 状态管理***及方法
CN113297516A (zh) 客户交互界面生成方法、装置和电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination