掌桥专利:专业的专利平台
掌桥专利
首页

通信系统、方法、装置、存储介质及电子设备

文献发布时间:2023-06-19 15:47:50



技术领域

本公开涉及通信技术领域,具体地,涉及一种通信系统、方法、装置、存储介质及电子设备。

背景技术

中间件是基础软件的一大类,介于操作系统与应用程序之间。消息中间件是一种面向消息传输需求的中间件技术,可以利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成,为分布式应用系统提供了高效透明的通信服务。

但在相关场景中,消息中间件还可能出现故障。在这种情况下,与之关联的应用和系统也容易受到影响。

发明内容

本公开的目的是提供一种通信系统、方法、装置、存储介质及电子设备,以解决上述相关技术问题。

为了实现上述目的,根据本公开实施例的第一方面,提供一种通信系统,包括消息代理端和区块链网络中的多个区块链节点,其中,所述消息代理端维护有消息主题与消息主题的订阅端之间的关联关系,所述多个区块链节点部署有消息智能合约;

所述多个区块链节点用于,响应于接收到针对消息发送端的第一消息的保存请求,通过部署的消息智能合约将所述第一消息存储至所述区块链网络的区块链中;

所述消息代理端用于,监听所述区块链中的数据;在监听到所述区块链中新增消息的情况下,根据新增的消息的消息主题,以及消息主题与消息主题的订阅端之间的关联关系,确定消息接收端,并将所述新增的消息发送至所述消息接收端。

可选地,所述消息代理端用于,在接收到消息发送端发送的消息的情况下,将接收到的消息转换为适配于所述区块链网络的消息协议的第一消息,并向所述多个区块链节点发送包括所述第一消息的保存请求。

可选地,所述消息发送端发送的消息为加密消息,所述加密消息由所述消息发送端根据消息接收端的私钥对原始消息加密得到。

可选地,所述多个区块链节点用于,通过如下步骤将所述第一消息存储至所述区块链网络的区块链中:

获取所述第一消息的第一消息主题;

根据所述第一消息主题,从已部署的多个消息智能合约中确定消息主题为第一消息主题的第一消息智能合约;

通过所述第一消息智能合约将所述第一消息保存至所述区块链中。

可选地,所述消息代理端用于,在接收到消息发送端的消息主题创建请求的情况下,向所述多个区块链节点发送消息主题智能合约创建请求,所述消息主题智能合约创建请求包括所述消息发送端请求创建的第二消息主题;

所述多个区块链节点用于,在接收到所述消息主题智能合约创建请求的情况下,创建对应于所述第二消息主题的目标消息智能合约或创建对应于所述第二消息主题的目标消息智能合约实例。

可选地,所述消息代理端用于,在监听到所述区块链中新增目标消息智能合约的情况下,获取所述目标消息智能合约的合约地址,并将所述合约地址以及所述目标消息智能合约的第二消息主题维护至所述消息代理端的消息主题列表中;或者,

在监听到所述区块链中新增目标消息智能合约实例的情况下,获取所述目标消息智能合约实例的合约地址,并将所述合约地址以及所述目标消息智能合约实例的第二消息主题维护至所述消息代理端的消息主题列表中。

可选地,所述消息代理端用于,在接收到消息接收端的消息主题查询请求的情况下,向所述消息接收端发送所述消息代理端所维护的消息主题列表;并在接收到所述消息接收端的订阅请求时,根据所述订阅请求更新所述消息接收端所维护的消息主题与消息主题的订阅端之间的关联关系;

其中,所述订阅请求包括所述消息接收端所要订阅的消息主题。

根据本公开实施例的第二方面,提供一种通信方法,应用于上述第一方面中任一项所述的通信系统中的消息代理端,所述方法包括:

获取区块链网络中新生成的区块数据;

在所述区块数据包括新增的消息的情况下,根据所述消息代理端所维护的消息主题与消息主题的订阅端之间的关联关系,确定所述新增的消息的消息接收端;

向所述消息接收端发送所述新增的消息;

其中,所述通信系统中的多个区块链节点用于在接收到针对消息发送端的第一消息的保存请求时,通过部署的消息智能合约将所述第一消息存储至所述区块链网络的区块链中。

可选地,包括:

接收消息发送端发送的消息;

将接收到的消息转换为适配于所述区块链网络的消息协议的第一消息;

向所述多个区块链节点发送包括所述第一消息的保存请求。

可选地,所述消息发送端发送的消息为加密消息,所述加密消息由所述消息发送端根据消息接收端的私钥对原始消息加密得到,所述将接收到的消息转换为适配于所述区块链网络的消息协议的第一消息,包括:

将接收到的加密消息转换为适配于所述区块链网络的消息协议的第一消息。

可选地,包括:

接收消息发送端的消息主题创建请求,所述消息主题创建请求包括所述消息发送端请求创建的第二消息主题;

向所述多个区块链节点发送消息主题智能合约创建请求,以使得所述多个区块链节点创建对应于所述第二消息主题的目标消息智能合约或创建对应于所述第二消息主题的目标消息智能合约实例;

在监听到所述区块链中新增目标消息智能合约的情况下,获取所述目标消息智能合约的合约地址,并将所述合约地址以及所述目标消息智能合约的第二消息主题维护至所述消息代理端的消息主题列表中;或者,在监听到所述区块链中新增目标消息智能合约实例的情况下,获取所述目标消息智能合约实例的合约地址,并将所述合约地址以及所述目标消息智能合约实例的第二消息主题维护至所述消息代理端的消息主题列表中。

可选地,包括:

接收消息接收端的消息主题查询请求;

向所述消息接收端发送所述消息代理端所维护的消息主题列表;

接收所述消息接收端的订阅请求,所述订阅请求包括所述消息接收端所要订阅的消息主题;

根据所述订阅请求更新所述消息接收端所维护的消息主题与消息主题的订阅端之间的关联关系。

根据本公开实施例的第三方面,提供一种通信装置,应用于上述第一方面中任一项所述的通信系统中的消息代理端,所述装置包括:

第一获取模块,用于获取区块链网络中新生成的区块数据;

第一确定模块,用于在所述区块数据包括新增的消息的情况下,根据所述消息代理端所维护的消息主题与消息主题的订阅端之间的关联关系,确定所述新增的消息的消息接收端;

第一发送模块,用于向所述消息接收端发送所述新增的消息;

其中,所述通信系统中的多个区块链节点用于在接收到针对消息发送端的第一消息的保存请求时,通过部署的消息智能合约将所述第一消息存储至所述区块链网络的区块链中。

可选地,所述装置包括:

第一接收模块,用于接收消息发送端发送的消息;

消息转换模块,用于将接收到的消息转换为适配于所述区块链网络的消息协议的第一消息;

第二发送模块,用于向所述多个区块链节点发送包括所述第一消息的保存请求。

可选地,所述消息发送端发送的消息为加密消息,所述加密消息由所述消息发送端根据消息接收端的私钥对原始消息加密得到,所述消息转换模块用于:

将接收到的加密消息转换为适配于所述区块链网络的消息协议的第一消息。

可选地,所述装置包括:

第二接收模块,用于接收消息发送端的消息主题创建请求,所述消息主题创建请求包括所述消息发送端请求创建的第二消息主题;

第三发送模块,用于向所述多个区块链节点发送消息主题智能合约创建请求,以使得所述多个区块链节点创建对应于所述第二消息主题的目标消息智能合约或创建对应于所述第二消息主题的目标消息智能合约实例;

第一执行模块,用于在监听到所述区块链中新增目标消息智能合约的情况下,获取所述目标消息智能合约的合约地址,并将所述合约地址以及所述目标消息智能合约的第二消息主题维护至所述消息代理端的消息主题列表中;或者,在监听到所述区块链中新增目标消息智能合约实例的情况下,获取所述目标消息智能合约实例的合约地址,并将所述合约地址以及所述目标消息智能合约实例的第二消息主题维护至所述消息代理端的消息主题列表中。

可选地,所述装置包括:

第三接收模块,用于接收消息接收端的消息主题查询请求;

第四发送模块,用于向所述消息接收端发送所述消息代理端所维护的消息主题列表;

第四接收模块,用于接收所述消息接收端的订阅请求,所述订阅请求包括所述消息接收端所要订阅的消息主题;

更新模块,用于根据所述订阅请求更新所述消息接收端所维护的消息主题与消息主题的订阅端之间的关联关系。

根据本公开实施例的第四方面,提供一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第二方面中任一项所述方法的步骤。

根据本公开实施例的第五方面,提供一种电子设备,包括:

存储器,其上存储有计算机程序;

处理器,用于执行所述存储器中的所述计算机程序,以实现上述第二方面中任一项所述方法的步骤。

采用上述技术方案,通信系统中的多个区块链节点能够响应于接收到针对消息发送端的第一消息的保存请求,通过部署的消息智能合约将所述第一消息存储至所述区块链网络的区块链中。此外,所述通信系统中的消息代理端能够通过监听区块链数据的变化,从而获得所述多个区块链节点保存的消息数据,并根据消息主题与消息主题的订阅端之间的关联关系,将获取到的消息数据发送至消息接收端。这样,所述消息代理端以及所述多个区块链节点能够实现消息中间件的功能。

并且,在上述技术方案中,消息发送端的消息能够通过消息智能合约保存至区块链中,即无法篡改和伪造。这样,即便发生故障,保存在区块链中的消息也不会丢失,从而提升了消息传输的可靠性。

本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。

附图说明

附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:

图1是本公开一示例性实施例所示出的一种通信系统的框图。

图2是本公开一示例性实施例所示出的一种通信流程图。

图3是本公开一示例性实施例所示出的一种通信方法的流程图。

图4是本公开一示例性实施例所示出的一种通信方法的流程图。

图5是本公开一示例性实施例所示出的一种通信场景的示意图。

图6是本公开一示例性实施例所示出的一种通信场景的示意图。

图7是本公开一示例性实施例所示出的一种通信装置的框图。

图8是本公开一示例性实施例所示出的一种电子设备的框图。

具体实施方式

以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。

在介绍本公开的通信系统、方法、装置、存储介质及电子设备之前,首先对本公开的应用场景进行介绍。

消息中间件技术可以利用其消息传递机制进行与平台无关的数据交流,具备广阔的应用前景。在一些场景中,消息中间件由各个公司进行中心化部署。在这种情况下,中心化的消息中间件可能存在较高的单点故障风险,可能出现数据丢失、数据被篡改等问题,从而导致与所述消息中间件关联的应用和系统受到影响。

为此,本公开提供一种通信系统。图1是本公开所示出的一种通信系统的框图,参照图1,所述通信系统可以包括消息代理端和区块链网络中的多个区块链节点。

其中,消息代理端可以设置于能够与所述区块链网络进行交互的计算设备中,这些计算设备可以是静止的或可移动的计算设备,如平板电脑、台式电脑等等。消息代理端的数量可以为一个或多个,各个消息代理端维护有消息主题与消息主题的订阅端之间的关联关系。

所述多个区块链节点部署有消息智能合约。这里,基于区块链网络的类型差异,所述多个区块链节点可以包括区块链网络中的各个全节点,或是包括所述消息智能合约的背书节点,本公开对此不做限制。

在所述通信系统中,所述多个区块链节点用于,响应于接收到针对消息发送端的第一消息的保存请求,通过部署的消息智能合约将所述第一消息存储至所述区块链网络的区块链中。

作为一种示例,所述保存请求可以是消息代理端发送的。在这种情况下,消息代理端可以用于,在接收到消息发送端发送的消息的情况下,将接收到的消息转换为适配于所述区块链网络的消息协议的第一消息,并向所述多个区块链节点发送包括所述第一消息的保存请求。这些保存请求可以以区块链交易的形式呈现。

应当理解,消息发送端可以通过Http(Hyper Text Transfer Protocol,超文本传输协议)、STOMP(Streaming Text Orientated Message Protocol,流文本定向消息协议)、MQTT(Message Queuing Telemetry Transport Protocol,消息队列遥感传输协议)等方式向消息代理端发送消息,但这些协议下的消息可能并不适配区块链的传输要求。因此,消息代理端可以在接收到消息发送端发送的消息的情况下,将接收到的消息转换为适配于所述区块链网络的消息协议的第一消息,从而适配消息发送端的各种消息类型,满足不同场景的需求。接着,消息代理端例如可以向消息智能合约地址发送交易,从而将所述第一消息保存至区块链中。

需要注意的是,在一些可能的实施场景中,消息发送端也可以直接与所述多个区块链节点通信。在这种情况下,消息发送端也可以根据区块链的消息协议,生成待保存的第一消息,并向所述多个区块链节点发送包括所述第一消息的保存请求。

这样,在接收到保存请求之后,所述多个区块链节点可以通过部署的消息智能合约,将所述第一消息保存至区块链中。例如,所述消息智能合约可以包括设定的消息保存模板,消息保存模板可以包括消息主题、消息发送方、消息接收方等字段。这样,各个区块链节点可以根据所述第一消息填写所述消息保存模板,并将得到的消息保存至区块链中。

参照图1,所述通信系统中的消息代理端用于,监听所述区块链中的数据;在监听到所述区块链中新增消息的情况下,根据新增的消息的消息主题,以及消息主题与消息主题的订阅端之间的关联关系,确定消息接收端,并将所述新增的消息发送至所述消息接收端。

示例地,所述消息代理端可以监听区块数据,当区块链网络共识生成新的区块时,所述消息代理端可以获取新生成的区块数据。这样,消息代理端例如可以通过查找消息标识从而确定所述区块中是否包括新增消息。在确定存在新增消息的情况下,则可以获取新增消息的消息主题,从而根据消息主题与消息主题的订阅端之间的关联关系,确定消息接收端,并将所述新增的消息发送至所述消息接收端。

采用上述技术方案,通信系统中的多个区块链节点能够响应于接收到针对消息发送端的第一消息的保存请求,通过部署的消息智能合约将所述第一消息存储至所述区块链网络的区块链中。此外,所述通信系统中的消息代理端能够通过监听区块链数据的变化,从而获得所述多个区块链节点保存的消息数据,并根据消息主题与消息主题的订阅端之间的关联关系,将获取到的消息数据发送至消息接收端。这样,所述消息代理端以及所述多个区块链节点能够实现消息中间件的功能。

并且,在上述技术方案中,消息发送端的消息能够通过消息智能合约保存至区块链中,即无法篡改和伪造。这样,即便发生故障,保存在区块链中的消息也不会丢失,从而提升了消息传输的可靠性。

值得说明的是,消息主题与消息主题的订阅端可以是一对多的。因此,在同一消息主题存在多个订阅端的情况下,消息代理端可以将新增的消息发送至多个订阅端。

在一些场景中,消息主题和消息主题的订阅端也可以是一对一的。在这种情况下,消息发送端发送的消息可以为加密消息,所述加密消息由所述消息发送端根据消息接收端的私钥对原始消息加密得到。

示例地,图2是本公开所示出的一种通信流程图,参照图2,在步骤1中,消息接收端可以生成公私钥对。

在步骤2中,消息接收端可以将公私钥对中的公钥发送(例如线下传递)至消息发送端。

在步骤3中,消息发送端在获得所述公钥的情况下,可以通过所述公钥对待发送的原始消息进行加密,得到加密消息。这样,消息发送端可以将加密消息发送至所述消息代理端或是所述多个区块链节点,从而将所述加密消息保存至区块链中。

在步骤4中,由于消息发送端订阅了所述加密消息的消息主题,因此,消息代理端在区块链中监听到所述加密消息之后,可以将将所述加密消息发送至所述消息接收端。这样,消息接收端可以通过私钥解密所述加密消息,从而获得原始消息。

通过这样的方式,即便消息代理端的消息主题列表公开,其他的消息接收端也无法获得加密消息的内容,从而实现了消息中间件的点对点模式。

此外,消息代理端还可以提供多种服务接口,如发布消息主题;关闭消息主题;订阅消息主题;取消订阅;获取消息主题列表;发送消息;接收消息。

以发布消息主题为例,消息发送端可以通过调用发布消息主题接口,从而创建新的消息主题。在这种情况下,所述消息代理端用于,在接收到消息发送端的消息主题创建请求的情况下,向所述多个区块链节点发送消息主题智能合约创建请求,所述消息主题智能合约创建请求包括所述消息发送端请求创建的第二消息主题;

所述多个区块链节点用于,在接收到所述消息主题智能合约创建请求的情况下,创建对应于所述第二消息主题的目标消息智能合约。

也就是说,所述多个区块链节点可以在接收到所述消息主题智能合约的情况下,约定创建新的目标消息智能合约。例如,可以根据第二消息主题填写预设的消息智能合约模板(可以包括消息主题名+消息体),并在填写完成之后在区块链网络中发送创建所述目标消息智能合约的交易,从而完成目标消息智能合约的创建。这样,所述多个区块链节点在接收到关于所述第二消息主题的消息时,可以通过所述目标消息智能合约将所述消息保存至区块链中。

在一些实施场景中,所述多个区块链节点也可以在接收到所述消息主题智能合约创建请求的情况下,创建对应于所述第二消息主题的目标消息智能合约实例。这里,目标消息智能合约实例可以是通过运行已部署的消息智能合约得到的。也就是说,在这种情况下,可以通过新增合约实例的方式,满足新的消息主题的消息传输需求。

在目标消息智能合约或目标消息智能合约实例创建完成之后,目标消息智能合约或目标消息智能合约实例的相关信息可以被保存至区块链中,这些信息例如可以包括合约名称、合约地址等等。

所述消息代理端可以用于,在监听到所述区块链中新增目标消息智能合约的情况下,获取所述目标消息智能合约的合约地址,并将所述合约地址以及所述目标消息智能合约的第二消息主题维护至所述消息代理端的消息主题列表中。

示例地,消息主题列表数据可以通过key-value形式储存,其中key为“消息主题名称”,value为“消息主题名称所对应的消息智能合约的地址”。沿用上述目标消息智能合约的例子,消息代理端在确定新生成的区块中包括目标消息智能合约的情况下,可以生成消息主题列表数据“第二消息主题-目标消息智能合约的地址”,并维护至消息主题列表中。

此外,消息代理端还可以在监听到所述区块链中新增目标消息智能合约实例(例如区块中包括“创建目标消息智能合约实例”的交易数据、已创建的目标消息智能合约实例的信息等)的情况下,获取所述目标消息智能合约实例的合约地址,并将所述合约地址以及所述目标消息智能合约实例的第二消息主题维护至所述消息代理端的消息主题列表中,其维护方式请参照上述示例,本公开对此不做赘述。通过这样的方式,消息代理端能够自动监听和维护新建的消息主题,以便于消息接收方查询。

以下对消息主题的查询和订阅过程进行示例性说明。其中,消息接收方例如可以通过调用消息代理端的查询接口,从而查询已创建的消息主题列表。所述消息代理端可以用于,在接收到消息接收端的消息主题查询请求的情况下,向所述消息接收端发送所述消息代理端所维护的消息主题列表。

这样,消息接收端可以查看消息主题列表中是否存在待订阅的消息主题。当存在待订阅的消息主题时,消息接收端可以向消息代理端发送订阅请求,所述订阅请求包括所述消息接收端所要订阅的消息主题。

所述消息代理端在接收到所述消息接收端的订阅请求后,可以根据所述订阅请求更新所述消息接收端所维护的消息主题与消息主题的订阅端之间的关联关系,从而完成订阅。当区块链中新增所述消息接收端已订阅的消息主题的消息时,所述消息代理端可以将所述消息发送至所述消息接收端。

仍参照图1,由于所述多个区块链节点可以部署有多种对应于不同消息主题的消息智能合约(或消息智能合约实例),因此在一种可能的实施方式中,所述多个区块链节点用于,通过如下步骤将所述第一消息存储至所述区块链网络的区块链中:

获取所述第一消息的第一消息主题;

根据所述第一消息主题,从已部署的多个消息智能合约中确定消息主题为第一消息主题的第一消息智能合约;

通过所述第一消息智能合约将所述第一消息保存至所述区块链中。

也就是说,可以通过各个智能合约来保存该智能合约所对应的消息主题下的消息,从而便于管理和维护。

基于同一发明构思,本公开还提供一种通信方法。所述通信方法可以应用于本公开所提供的通信系统中的消息代理端。图3是本公开所示出的一种通信方法的流程图,参照图3,所述方法包括:

在步骤31中,获取区块链网络中新生成的区块数据;

在步骤32中,在区块数据包括新增的消息的情况下,根据消息代理端所维护的消息主题与消息主题的订阅端之间的关联关系,确定新增的消息的消息接收端;

在步骤33中,向消息接收端发送新增的消息;

其中,所述通信系统中的多个区块链节点用于在接收到针对消息发送端的第一消息的保存请求时,通过部署的消息智能合约将所述第一消息存储至所述区块链网络的区块链中。

示例地,所述消息代理端可以监听区块数据,当区块链网络共识生成新的区块时,所述消息代理端可以获取新生成的区块数据。这样,消息代理端例如可以通过查找消息标识从而确定所述区块中是否包括新增消息。在确定存在新增消息的情况下,则可以获取新增消息的消息主题,从而根据消息主题与消息主题的订阅端之间的关联关系,确定消息接收端,并将所述新增的消息发送至所述消息接收端。

采用上述技术方案,通信系统中的多个区块链节点能够响应于接收到针对消息发送端的第一消息的保存请求,通过部署的消息智能合约将所述第一消息存储至所述区块链网络的区块链中。此外,所述通信系统中的消息代理端能够通过监听区块链数据的变化,从而获得所述多个区块链节点保存的消息数据,并根据消息主题与消息主题的订阅端之间的关联关系,将获取到的消息数据发送至消息接收端。这样,所述消息代理端以及所述多个区块链节点能够实现消息中间件的功能。

并且,在上述技术方案中,消息发送端的消息能够通过消息智能合约保存至区块链中,即无法篡改和伪造。这样,即便发生故障,保存在区块链中的消息也不会丢失,从而提升了消息传输的可靠性。

值得说明的是,消息主题与消息主题的订阅端可以是一对多的。因此,在同一消息主题存在多个订阅端的情况下,消息代理端可以将新增的消息发送至多个订阅端。

在一些场景中,消息主题和消息主题的订阅端也可以是一对一的。在这种情况下,消息发送端发送的消息可以为加密消息,所述加密消息由所述消息发送端根据消息接收端的私钥对原始消息加密得到。所述将接收到的消息转换为适配于所述区块链网络的消息协议的第一消息,包括:

将接收到的加密消息转换为适配于所述区块链网络的消息协议的第一消息。

其中,加密过程请参照上述关于图2的实施例说明,为了说明书的简洁,本公开对此不做赘述。通过这样的加密方式,即便消息代理端的消息主题列表公开,其他的消息接收端也无法获得加密消息的内容,从而实现了消息中间件的点对点模式。

在一种可能的实施方式中,所述方法还包括:

接收消息发送端发送的消息;

将接收到的消息转换为适配于所述区块链网络的消息协议的第一消息;

向所述多个区块链节点发送包括所述第一消息的保存请求。

其中,保存请求可以以区块链交易的形式呈现。应当理解,消息发送端可以通过Http、STOMP、MQTT等方式向消息代理端发送消息,但这些协议下的消息可能并不适配区块链的传输要求。因此,消息代理端可以在接收到消息发送端发送的消息的情况下,将接收到的消息转换为适配于所述区块链网络的消息协议的第一消息,从而适配各种消息类型。

此外,消息代理端还可以提供多种服务接口,如发布消息主题;关闭消息主题;订阅消息主题;取消订阅;获取消息主题列表;发送消息;接收消息。

以发布消息主题为例,消息发送端可以通过调用发布消息主题接口,从而创建新的消息主题。在这种情况下,参照图4所示出的一种通信方法的流程图,所述方法在图3的基础上,还包括:

S34,接收消息发送端的消息主题创建请求,消息主题创建请求包括消息发送端请求创建的第二消息主题。

S35,向多个区块链节点发送消息主题智能合约创建请求,以使得多个区块链节点创建对应于第二消息主题的目标消息智能合约或创建对应于所述第二消息主题的目标消息智能合约实例。

也就是说,所述多个区块链节点可以在接收到所述消息主题智能合约的情况下,约定创建新的目标消息智能合约。例如,可以根据第二消息主题填写预设的消息智能合约模板(如消息主题名+消息体),在填写完成之后发送创建所述目标消息智能合约的交易,从而完成目标消息智能合约的创建。这样,所述多个区块链节点在接收到关于所述第二消息主题的消息时,可以通过所述目标消息智能合约将所述消息保存至区块链中。

在一些实施场景中,所述多个区块链节点也可以在接收到所述消息主题智能合约创建请求的情况下,创建对应于所述第二消息主题的目标消息智能合约实例。这里,目标消息智能合约实例可以是通过运行已部署的消息智能合约得到的。也就是说,在这种情况下,可以通过新增合约实例的方式,满足新的消息主题的消息传输需求。

在目标消息智能合约或目标消息智能合约实例创建完成之后,目标消息智能合约或目标消息智能合约实例的相关信息可以被保存至区块链中,这些信息例如可以包括合约名称、合约地址等等。

S36,在监听到区块链中新增目标消息智能合约的情况下,获取目标消息智能合约的合约地址,并将合约地址以及目标消息智能合约的第二消息主题维护至消息代理端的消息主题列表中。

以目标消息智能合约为例,可以通过key-value形式储存消息主题列表数据,其中key为“消息主题名称”,value为“消息主题名称所对应的消息智能合约的地址”。沿用上述目标消息智能合约的例子,消息代理端在确定新生成的区块中包括目标消息智能合约的情况下,可以生成消息主题列表数据“第二消息主题-目标消息智能合约的地址”,并维护至消息主题列表中。

S37,在监听到区块链中新增目标消息智能合约实例的情况下,获取目标消息智能合约实例的合约地址,并将合约地址以及目标消息智能合约实例的第二消息主题维护至消息代理端的消息主题列表中。

例如,消息代理端可以在监听到所述区块链中新增目标消息智能合约实例(例如区块中包括“创建目标消息智能合约实例”的交易数据、已创建的目标消息智能合约实例的信息等)的情况下,获取所述目标消息智能合约实例的合约地址,并将所述合约地址以及所述目标消息智能合约实例的第二消息主题维护至所述消息代理端的消息主题列表中,其维护方式请参照上述示例,本公开对此不做赘述。通过这样的方式,消息代理端能够自动监听和维护新建的消息主题,以便于消息接收方查询。

以下对消息主题的查询和订阅过程进行示例性说明。其中,消息接收方例如可以通过调用消息代理端的查询接口,从而查询已创建的消息主题列表。所述方法还包括:

接收消息接收端的消息主题查询请求;

向消息接收端发送消息代理端所维护的消息主题列表;

接收消息接收端的订阅请求,订阅请求包括消息接收端所要订阅的消息主题;

根据订阅请求更新消息接收端所维护的消息主题与消息主题的订阅端之间的关联关系。

例如,参照图5所示出的一种通信场景的示意图,在步骤1中,机器人管控平台可以向消息代理端发送消息主题查询请求,从而获得消息代理端所维护的消息主题列表。

接着,机器人管控平台可以查看消息主题列表中是否存在待订阅的消息主题。当存在待订阅的消息主题时,机器人管控平台可以向消息代理端发送订阅请求,所述订阅请求包括所述机器人管控平台所要订阅的消息主题。作为一种示例,待订阅的消息主题可以为“监视机器人运行情况”。

所述消息代理端在接收到所述消息接收端的订阅请求后,可以根据所述订阅请求更新所述消息接收端所维护的消息主题与消息主题的订阅端之间的关联关系,从而完成订阅。这样,在步骤2中,各类机器人可以通过自身搭载的物联网设备采集相关运行数据,并通过消息代理端的发送消息接口向消息主题“监视机器人运行情况”发送采集到的数据。而由于机器人管控平台已订阅该消息主题,因此在步骤3中,消息代理端可以将机器人采集到的数据发送至机器人管控平台,以便于管理人员进行查看与分析。

图6是本公开所示出的一种通信场景的示意图,在步骤1中,清洁机器人可以向消息代理端发送消息主题查询请求,从而获得消息代理端所维护的消息主题列表。

清洁机器人还可以查看消息主题列表中是否存在待订阅的消息主题。当存在待订阅的消息主题时,消息接收端可以向消息代理端发送订阅请求,所述订阅请求包括所述清洁机器人所要订阅的消息主题。作为一种示例,待订阅的消息主题可以为“清洁操作指令”。

所述消息代理端在接收到所述订阅请求后,可以根据所述订阅请求更新所述消息接收端所维护的消息主题与消息主题的订阅端之间的关联关系,从而完成订阅。这样,在步骤2中,机器人管控平台可以通过发送消息接口发送“清洁操作指令”消息。而由于清洁机器人已订阅该消息主题,因此在步骤3中,消息代理端可以将“清洁操作指令”消息发送至清洁机器人。这样,清洁机器人可以执行清洁任务,而其他的机器人则不会收到清洁操作指令。

基于同一发明构思,本公开还提供一种通信装置,应用于本公开所提供的通信系统中的消息代理端。图7是本公开所示出的一种通信装置的框图,参照图7,装置700包括:

第一获取模块701,用于获取区块链网络中新生成的区块数据;

第一确定模块702,用于在所述区块数据包括新增的消息的情况下,根据所述消息代理端所维护的消息主题与消息主题的订阅端之间的关联关系,确定所述新增的消息的消息接收端;

第一发送模块703,用于向所述消息接收端发送所述新增的消息;

其中,所述通信系统中的多个区块链节点用于在接收到针对消息发送端的第一消息的保存请求时,通过部署的消息智能合约将所述第一消息存储至所述区块链网络的区块链中。

采用上述技术方案,通信系统中的多个区块链节点能够响应于接收到针对消息发送端的第一消息的保存请求,通过部署的消息智能合约将所述第一消息存储至所述区块链网络的区块链中。此外,所述通信系统中的消息代理端能够通过监听区块链数据的变化,从而获得所述多个区块链节点保存的消息数据,并根据消息主题与消息主题的订阅端之间的关联关系,将获取到的消息数据发送至消息接收端。这样,所述消息代理端以及所述多个区块链节点能够实现消息中间件的功能。

并且,在上述技术方案中,消息发送端的消息能够通过消息智能合约保存至区块链中,即无法篡改和伪造。这样,即便发生故障,保存在区块链中的消息也不会丢失,从而提升了消息传输的可靠性。

可选地,所述装置包括:

第一接收模块,用于接收消息发送端发送的消息;

消息转换模块,用于将接收到的消息转换为适配于所述区块链网络的消息协议的第一消息;

第二发送模块,用于向所述多个区块链节点发送包括所述第一消息的保存请求。

可选地,所述消息发送端发送的消息为加密消息,所述加密消息由所述消息发送端根据消息接收端的私钥对原始消息加密得到,所述消息转换模块用于:

将接收到的加密消息转换为适配于所述区块链网络的消息协议的第一消息。

可选地,所述装置包括:

第二接收模块,用于接收消息发送端的消息主题创建请求,所述消息主题创建请求包括所述消息发送端请求创建的第二消息主题;

第三发送模块,用于向所述多个区块链节点发送消息主题智能合约创建请求,以使得所述多个区块链节点创建对应于所述第二消息主题的目标消息智能合约或创建对应于所述第二消息主题的目标消息智能合约实例;

第一执行模块,用于在监听到所述区块链中新增目标消息智能合约的情况下,获取所述目标消息智能合约的合约地址,并将所述合约地址以及所述目标消息智能合约的第二消息主题维护至所述消息代理端的消息主题列表中;或者,在监听到所述区块链中新增目标消息智能合约实例的情况下,获取所述目标消息智能合约实例的合约地址,并将所述合约地址以及所述目标消息智能合约实例的第二消息主题维护至所述消息代理端的消息主题列表中。

可选地,所述装置包括:

第三接收模块,用于接收消息接收端的消息主题查询请求;

第四发送模块,用于向所述消息接收端发送所述消息代理端所维护的消息主题列表;

第四接收模块,用于接收所述消息接收端的订阅请求,所述订阅请求包括所述消息接收端所要订阅的消息主题;

更新模块,用于根据所述订阅请求更新所述消息接收端所维护的消息主题与消息主题的订阅端之间的关联关系。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

本公开还提供一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本公开所提供的通信方法的步骤。

本公开还提供一种电子设备,包括:

存储器,其上存储有计算机程序;

处理器,用于执行所述存储器中的所述计算机程序,以实现本公开所提供的通信方法的步骤。

图8是根据一示例性实施例示出的一种电子设备800的框图。例如,电子设备800可以被提供为一服务器。参照图8,电子设备800包括处理器822,其数量可以为一个或多个,以及存储器832,用于存储可由处理器822执行的计算机程序。存储器832中存储的计算机程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理器822可以被配置为执行该计算机程序,以执行上述的通信方法。

另外,电子设备800还可以包括电源组件826和通信组件850,该电源组件826可以被配置为执行电子设备800的电源管理,该通信组件850可以被配置为实现电子设备800的通信,例如,有线或无线通信。此外,该电子设备800还可以包括输入/输出(I/O)接口858。电子设备800可以操作基于存储在存储器832的操作系统,例如Windows Server

在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的通信方法的步骤。例如,该非临时性计算机可读存储介质可以为上述包括程序指令的存储器832,上述程序指令可由电子设备800的处理器822执行以完成上述的通信方法。

在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的通信方法的代码部分。

以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。

另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。

此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。

相关技术
  • 一种云边通信系统、方法、装置、电子设备及存储介质
  • 信号处理方法及装置、通信系统、电子设备及存储介质
技术分类

06120114580373