一种基于区块链的消息队列设计方法及装置制造方法及图纸

技术编号:25230421 阅读:37 留言:0更新日期:2020-08-11 23:17
本说明书实施例涉及一种基于区块链的消息队列设计方法及装置,基于区块链上智能合约的日志索引功能,作为消息的路由机制。这样消息的发布方可以发送某个事件,并为事件增加消息主题,这样订阅者可以通过监听某一类型的主题来实现订阅消息事件。同时允许多方同时发布消息事件,和多方同时订阅消息,订阅者和发布者可以形成多对多的映射关系,并且可以通过权限管理来规定消息发布和订阅的权限。由于区块链多中心的特点使得这种消息队列具有更好的可用性和健壮性。

【技术实现步骤摘要】
一种基于区块链的消息队列设计方法及装置
本说明书实施例涉及网络
,尤其涉及一种基于区块链的消息队列设计方法及装置。
技术介绍
目前常见的消息队列设计有Rabbitmq,Kafka等,消息被发送到队列中,消息队列是在消息在传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到目的地时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接受者不可用,消息队列会保留消息,直到可以成功地传递它。但传统的消息队列作为单一的中心,一旦系统故障容易导致消息队列不可用。
技术实现思路
本说明书实施例提供一种基于区块链的消息队列设计方法及装置,用以解决现有技术的单一中心所导致的抗风险能力差的问题。为了解决上述技术问题,本说明书实施例采用下述技术方案:第一方面,提供了一种基于区块链的消息队列设计方法,应用于联盟链系统,所述方法包括:在区块链上部署消息发送事件的智能合约,所述智能合约中设置日志索引的类型;消息发送方和消息订阅方获得所述智能合约地址;所述消息发送方将消息内容及日志索引的内容构造交易发送至所述智能合约;所述消息订阅方调用RPC接口并进行监听参数设置,以进行消息监听;其中,所述监听参数包括至少一个日志索引类型;所述消息订阅方根据监听结果对历史消息进行读取。第二方面,提供了一种基于区块链的消息队列设计装置,应用于联盟链系统,所述装置包括:合约部署单元:用于在区块链上部署消息发送事件的智能合约,所述智能合约中设置日志索引的类型;合约地址获取单元:用于消息发送方和消息订阅方获得所述智能合约地址;交易构造单元:用于所述消息发送方将消息内容及日志索引的内容构造交易发送至所述智能合约;消息监听单元:用于所述消息订阅方调用RPC接口并进行监听参数设置,以进行消息监听;其中,所述监听参数包括至少一个日志索引类型;消息读取单元:用于所述消息订阅方根据监听结果对历史消息进行读取。本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:在区块链的联盟链系统中,由于其消息一旦上链后就不会被回滚,具有最终确定性,同时区块链的消息不可篡改的特性和分布式的特点。因此通过在联盟链系统中进行消息队列的设计,持久地保留消息,消息的接收方不可用时,区块链会始终保留消息在链上,待消息接收方恢复正常时依然可以读取到历史的消息。由于区块链多中心的特点使得这种消息队列具有更好的可用性和健壮性。附图说明为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本说明书实施例提供的基于区块链的消息队列设计方法的步骤示意图;图2为本说明书实施例提供的基于区块链的消息队列设计装置的结构示意图。具体实施方式为使本说明书实施例的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书实施例保护的范围。以下结合附图,详细说明本说明书各实施例提供的技术方案。需要说明的是:在本专利技术所应用的联盟链中,需要满足以下前提:支持智能合约,并可以通过智能合约来定义消息发送的权限;支持智能合约生成日志,并可以为其添加日志索引,例如日志索引可通过BloomFilter的方式记录在区块中,进一步提高检索效率;支持RPC接口可以方便地监听索引。实施例一参照图1所示,为本说明书实施例提供的一种基于区块链的消息队列设计方法的步骤示意图,应用于联盟链系统,所述方法包括:步骤102:在区块链上部署消息发送事件的智能合约,所述智能合约中设置日志索引的类型;步骤104:消息发送方和消息订阅方获得所述智能合约地址;步骤106:所述消息发送方将消息内容及日志索引的内容构造交易发送至所述智能合约;步骤108:所述消息订阅方调用RPC接口并进行监听参数设置,以进行消息监听;其中,所述监听参数包括至少一个日志索引类型;步骤110:所述消息订阅方根据监听结果对历史消息进行读取。可选的,其中所述日志索引的类型包括:消息主题、消息发送方地址、消息订阅方地址中的一个或几个。可选的,其中所述监听参数进一步包括:开始监听的区块,结束监听的区块,智能合约的地址中的一个或几个。现具体举例说明基于区块链的消息队列设计的过程。以A,B,C三方为例,其中A为消息的发送方,使用节点N1访问链;B,C为消息订阅方,使用节点N2访问链。A,B,C三方约定,智能合约中事件的格式为(stringindexedtopic,addressindexedsender,stringdata),因此在区块链上部署的消息发送事件的智能合约代码如下:其中stringindexedtopic表示日志索引的类型为消息主题;addressindexedsender表示日志索引的类型为消息发送方的地址;addressindexedto表示日志索引的类型为消息订阅方的地址;stringdata表示消息内容的数据格式为字符串。消息发送方A和消息订阅方B、C获得所述智能合约地址,并公布合约代码,这样A、B、C可以通过地址获取合约代码进行确认。当A想发送消息给B时,将消息内容及日志索引的内容构造交易发送至智能合约,其中调用方法是publish。消息订阅方B调用RPC接口,如newFilter来进行消息监听。监听参数设置包括开始监听的区块fromBlock,结束监听的区块toBlock,智能合约的地址,以及日志索引的类型为消息发送方的地址与A地址匹配;B根据监听结果对历史消息进行读取。当B或者节点N2出现故障时,故障修复后,B可以从故障区块高度起重新进行监听而不用担心消息的丢失。如果有新的用户D加入,D想订阅A发给B及C的消息,D进行监听时的监听参数设置包括开始监听的区块fromBlock,结束监听的区块toBlock,智能合约的地址,以及日志索引的类型为消息发送方的地址与A地址匹配;消息订阅方地址与B或C的地址匹配。如果新增用户E,作为消息发送方,也需要向B,C发布消息,则需要合约管理者把E增加到智能合约地址的可写权限,E方可发送消息可选的,所述RPC接口为newFilter接口。可选的,在所述智能合约对用户的消息发送和订阅权限进行管理。由于本专利技术实施例中事件监听没有办法区分事件类型,所以这里对于每个事件使用一个合约地址,如果要增加新的事件类型,需要部本文档来自技高网...

【技术保护点】
1.一种基于区块链的消息队列设计方法,应用于联盟链系统,所述方法包括:/n在区块链上部署消息发送事件的智能合约,所述智能合约中设置日志索引的类型;/n消息发送方和消息订阅方获得所述智能合约地址;/n所述消息发送方将消息内容及日志索引的内容构造交易发送至所述智能合约;/n所述消息订阅方调用RPC接口并进行监听参数设置,以进行消息监听;其中,所述监听参数包括至少一个日志索引类型;/n所述消息订阅方根据监听结果对历史消息进行读取。/n

【技术特征摘要】
1.一种基于区块链的消息队列设计方法,应用于联盟链系统,所述方法包括:
在区块链上部署消息发送事件的智能合约,所述智能合约中设置日志索引的类型;
消息发送方和消息订阅方获得所述智能合约地址;
所述消息发送方将消息内容及日志索引的内容构造交易发送至所述智能合约;
所述消息订阅方调用RPC接口并进行监听参数设置,以进行消息监听;其中,所述监听参数包括至少一个日志索引类型;
所述消息订阅方根据监听结果对历史消息进行读取。


2.如权利要求1所述的方法,其中,所述日志索引的类型包括:消息主题、消息发送方地址、消息订阅方地址中的一个或几个。


3.如权利要求1所述的方法,其中,所述监听参数进一步包括:开始监听的区块,结束监听的区块,智能合约的地址中的一个或几个。


4.如权利要求1所述的方法,其中,所述RPC接口为newFilter接口。


5.如权利要求1所述的方法,进一步包括,所述智能合约对用户的消息发送和订阅权限进行管理。


6.一种基于区块链的消息队列设计装置,应用于...

【专利技术属性】
技术研发人员:王晓亮张亚宁
申请(专利权)人:杭州溪塔科技有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1