一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于信息目录的跨业务区域消息交互方法

2022-07-30 23:12:07 来源:中国专利 TAG:


1.本公开涉及通信技术领域,尤其涉及一种基于信息目录的跨业务区域消息交互方法。


背景技术:

2.在安全性要求较高的场景下,不同业务区域之间通过跨区域通道进行联通,而且跨区域网关对外只开放非常有限数量的端口,这样可以方便检查不同业务区域之间的通信流量,这种情况下不同区域之间无法建立有效的长链接。并且对于户外机动作业来说,有限数量的机动作业车组成一个业务区域,该业务区域通过无线网络连接固定服务中心(也是一个业务区域),而无线网络的抖动、延迟等对于业务服务来说是难以忍受和处理的。
3.目前互联网上常规业务消息集群基本不存在上述跨业务区域的情况,一套消息集群往往只在一定的业务场景内部使用;并且互联网上常规业务基本不存在网关之间不能建立长链接的情况。因此,在上述对跨业务区域之间信息传递安全性要求较高、且跨业务区域之间网络无法建立有效长链接,尤其是户外机动作业网络状况差的情况下,通过区域内消息客户端直接访问其他区域消息服务集群来获取所需消息是不现实的(消息客户端直接访问消息集群一般需要保持长链接)。因此,在上述情况下如何提高跨业务区域的消息交互效率就成了目前亟待解决的问题。


技术实现要素:

4.本公开提供了一种基于信息目录的跨业务区域消息交互方法、装置、设备和存储介质,可以提高跨业务区域的消息交互效率与安全性。
5.第一方面,本公开实施例提供了一种基于信息目录的跨业务区域消息交互方法,该方法包括:
6.订阅业务区域的业务服务通过订阅业务区域的消息跨区域服务向发布业务区域的业务服务进行跨区域消息订阅;其中,
7.订阅业务区域的业务服务向订阅业务区域的消息跨区域服务发送第一跨区域消息订阅请求;
8.订阅业务区域的消息跨区域服务根据第一跨区域消息订阅请求,在订阅业务区域的信息目录的订阅列表中添加订阅记录,并向发布业务区域的消息跨区域服务发送第二跨区域消息订阅请求;
9.发布业务区域的消息跨区域服务根据第二跨区域消息订阅请求,在发布业务区域的信息目录的发布列表中添加发布记录,并向发布业务区域的消息服务端发送第三跨区域消息订阅请求;
10.发布业务区域的业务服务通过发布业务区域的消息跨区域服务向订阅业务区域的业务服务进行跨区域消息发布;其中,
11.发布业务区域的业务服务通过发布业务区域的消息服务端向发布业务区域的消
息跨区域服务发送消息;
12.发布业务区域的消息跨区域服务对发布业务区域的发布列表进行查询,根据查询得到的发布记录中的订阅业务区域名,向订阅业务区域的消息跨区域服务发送消息;
13.订阅业务区域的消息跨区域服务对订阅业务区域的信息目录的订阅列表进行查询,根据查询得到的订阅记录对消息的消息主题名进行调整,并向订阅业务区域的消息服务端发送消息;
14.订阅业务区域的消息服务端向对应的业务服务发送消息。
15.在第一方面的一些可实现方式中,订阅业务区域的消息跨区域服务向发布业务区域的消息跨区域服务发送第二跨区域消息订阅请求,包括:
16.订阅业务区域的消息跨区域服务若在订阅业务区域的订阅列表中查询到消息主题名、发布业务区域名与新添加的订阅记录中的消息主题名、发布业务区域名一致的订阅记录,则完成跨区域消息订阅;
17.订阅业务区域的消息跨区域服务若在订阅业务区域的订阅列表中未查询到消息主题名、发布业务区域名与新添加的订阅记录中的消息主题名、发布业务区域名一致的订阅记录,则向发布业务区域的消息跨区域服务发送第二跨区域消息订阅请求。
18.在第一方面的一些可实现方式中,发布业务区域的消息跨区域服务向发布业务区域的消息服务端发送第三跨区域消息订阅请求,包括:
19.发布业务区域的消息跨区域服务若在发布业务区域的发布列表中查询到消息主题名与新添加的发布记录中的消息主题名一致的发布记录,则完成跨区域消息订阅;
20.发布业务区域的消息跨区域服务若在发布业务区域的发布列表中未查询到消息主题名与新添加的发布记录中的消息主题名一致的发布记录,则向发布业务区域的消息服务端发送第三跨区域消息订阅请求。
21.在第一方面的一些可实现方式中,发布业务区域的消息跨区域服务根据查询得到的发布记录中的订阅业务区域名,向订阅业务区域的消息跨区域服务发送消息,包括:
22.发布业务区域的消息跨区域服务若在发布业务区域的信息目录中的其他区域消息跨区域服务地址列表中查询到订阅业务区域名对应的消息跨区域服务地址,则根据查询到的消息跨区域服务地址,向订阅业务区域的消息跨区域服务发送消息;
23.发布业务区域的消息跨区域服务若在发布业务区域的信息目录中的其他区域消息跨区域服务地址列表中未查询到订阅业务区域名对应的消息跨区域服务地址,则根据订阅业务区域名,从全区域信息目录中获取订阅业务区域的消息跨区域服务地址,并根据获取的消息跨区域服务地址,向订阅业务区域的消息跨区域服务发送消息。
24.在第一方面的一些可实现方式中,订阅业务区域的消息跨区域服务根据查询得到的订阅记录对消息的消息主题名进行调整,并向订阅业务区域的消息服务端发送消息,包括:
25.若查询得到的订阅记录中的原发布业务区域名为空值,则订阅业务区域的消息跨区域服务将发布业务区域名与消息的消息主题名拼接,将拼接得到的主题名作为消息的消息主题名,并向订阅业务区域的消息服务端发送息;
26.若查询得到的订阅记录中的原发布业务区域名不为空值,则订阅业务区域的消息跨区域服务将原发布业务区域名与消息的消息主题名拼接,将拼接得到的主题名作为消息
的消息主题名,并向订阅业务区域的消息服务端发送消息。
27.在第一方面的一些可实现方式中,该方法还包括:
28.订阅业务区域的业务服务通过订阅业务区域的消息跨区域服务向发布业务区域的业务服务进行跨区域消息取消订阅;其中,
29.订阅业务区域的业务服务向订阅业务区域的消息跨区域服务发送第一跨区域消息取消订阅请求;
30.订阅业务区域的消息跨区域服务若在订阅业务区域的订阅列表中查询到业务服务客户端号、消息主题名、发布业务区域名与第一跨区域消息取消订阅请求中的业务服务客户端号、消息主题名、发布业务区域名一致的订阅记录,则删除查询到的订阅记录;若在删除查询到的订阅记录后的订阅列表中查询到消息主题名、发布业务区域名与第一跨区域消息取消订阅请求中的消息主题名、发布业务区域名一致的订阅记录,则完成跨区域消息取消订阅;若在删除查询到的订阅记录后的订阅列表中未查询到消息主题名、发布业务区域名与第一跨区域消息取消订阅请求中的消息主题名、发布业务区域名一致的订阅记录,则向发布业务区域的消息跨区域服务发送第二跨区域消息取消订阅请求;
31.发布业务区域的消息跨区域服务删除发布业务区域的发布列表中消息主题名、订阅业务区域名与第二跨区域消息取消订阅请求中的消息主题名、订阅业务区域名一致的发布记录,若在删除查询到的发布记录后的发布列表中查询到消息主题名与第二跨区域消息取消订阅请求中的消息主题名一致的发布记录,则完成跨区域消息取消订阅;若在删除查询到的发布记录后的发布列表中未查询到消息主题名与第二跨区域消息取消订阅请求中的消息主题名一致的发布记录,则向发布业务区域的消息服务端发送第三跨区域消息取消订阅请求;
32.订阅业务区域的消息跨区域服务若在订阅业务区域的订阅列表中查询到业务服务客户端号、消息主题名、原发布业务区域名与第一跨区域消息取消订阅请求中的业务服务客户端号、消息主题名、发布业务区域名一致的订阅记录,则删除查询到的订阅记录,执行针对查询到的订阅记录对应的消息取消订阅流程。
33.在第一方面的一些可实现方式中,该方法还包括:
34.根据用户对订阅业务区域的订阅列表中的订阅记录输入的发布业务区域名内容,将订阅记录中原发布业务区域名的内容更新为订阅记录中发布业务区域名的内容,并将订阅记录中的发布业务区域名的内容更新为输入的发布业务区域名内容;
35.订阅业务区域的消息跨区域服务若在订阅业务区域的订阅列表中查询到消息主题名和发布业务区域名与更新后的订阅记录的消息主题名和原发布业务区域名一致的订阅记录,则完成跨区域消息取消订阅;
36.订阅业务区域的消息跨区域服务若在订阅业务区域的订阅列表中未查询到消息主题名和发布业务区域名与更新后的订阅记录的消息主题名和原发布业务区域名一致的订阅记录,则取消订阅更新后的原发布业务区域中与更新后的订阅记录中的消息主题名对应的消息;
37.订阅业务区域的消息跨区域服务若在订阅业务区域的订阅列表中查询到消息主题名和发布业务区域名与更新后的订阅记录的消息主题名和发布业务区域名一致的订阅记录,则完成跨区域消息订阅;
38.订阅业务区域的消息跨区域服务若在订阅业务区域的订阅列表中未查询到消息主题名和发布业务区域名与更新后的订阅记录的消息主题名和发布业务区域名一致的订阅记录,则订阅更新后的发布业务区域中与更新后的订阅记录中的消息主题名对应的消息。
39.第二方面,本公开实施例提供了一种基于信息目录的跨业务区域消息交互装置,该装置包括:
40.订阅模块,用于订阅业务区域的业务服务通过订阅业务区域的消息跨区域服务向发布业务区域的业务服务进行跨区域消息订阅;其中,
41.订阅业务区域的业务服务向订阅业务区域的消息跨区域服务发送第一跨区域消息订阅请求;
42.订阅业务区域的消息跨区域服务根据第一跨区域消息订阅请求,在订阅业务区域的信息目录的订阅列表中添加订阅记录,并向发布业务区域的消息跨区域服务发送第二跨区域消息订阅请求;
43.发布业务区域的消息跨区域服务根据第二跨区域消息订阅请求,在发布业务区域的信息目录的发布列表中添加发布记录,并向发布业务区域的消息服务端发送第三跨区域消息订阅请求;
44.发布模块,用于发布业务区域的业务服务通过发布业务区域的消息跨区域服务向订阅业务区域的业务服务进行跨区域消息发布;其中,
45.发布业务区域的业务服务通过发布业务区域的消息服务端向发布业务区域的消息跨区域服务发送消息;
46.发布业务区域的消息跨区域服务对发布业务区域的发布列表进行查询,根据查询得到的发布记录中的订阅业务区域名,向订阅业务区域的消息跨区域服务发送消息;
47.所述订阅业务区域的消息跨区域服务对所述订阅业务区域的信息目录的订阅列表进行查询,根据查询得到的订阅记录对所述消息的消息主题名进行调整,并向所述订阅业务区域的消息服务端发送所述消息;
48.所述订阅业务区域的消息服务端向对应的业务服务发送所述消息。
49.第三方面,本公开实施例提供了一种电子设备,该电子设备包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如以上所述的方法。
50.第四方面,本公开实施例提供了一种存储有计算机指令的非瞬时计算机可读存储介质,计算机指令用于使计算机执行如以上所述的方法。
51.第五方面,本公开实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序,计算机程序在被处理器执行时实现如以上所述的方法。
52.在本公开中,可以在跨业务区域环境下,基于各区域内的消息跨区域服务按需进行不同区域之间消息的发布和订阅,提高跨业务区域的消息交互效率与安全性。
53.应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。
附图说明
54.结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。附图用于更好地理解本方案,不构成对本公开的限定在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
55.图1示出了一种能够在其中实现本公开的实施例的示例性运行环境的示意图;
56.图2示出了本公开实施例提供的一种基于信息目录的跨业务区域消息交互方法的流程图;
57.图3示出了本公开实施例提供的一种基于信息目录的跨业务区域消息交互场景示意图;
58.图4示出了本公开实施例提供的一种基于信息目录的跨业务区域消息交互装置的结构图;
59.图5示出了一种能够实施本公开的实施例的示例性电子设备的结构图。
具体实施方式
60.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本公开保护的范围。
61.另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
62.可以理解,本公开中的跨业务区域不同于互联网上的跨域,互联网上域的概念是使用同样的协议、ip地址和端口的服务为同一个域,而本公开中的业务区域是指独立成体系的业务系统即为一个区域,也即业务区域是单位内部各类业务系统及子单位业务系统联合在一起组成体系的大型软件系统,区域内部网络直接互通,内部业务服务之间可直接相互访问(有访问权限的情况下),不同业务区域之间网络并不直接联通,此外,区域内部的服务使用的协议、ip地址和端口均可以不同。
63.针对背景技术中出现的问题,本公开实施例提供了一种基于信息目录的跨业务区域消息交互方法、装置、设备和存储介质。具体地,订阅业务区域的业务服务通过订阅业务区域的消息跨区域服务向发布业务区域的业务服务进行跨区域消息订阅;发布业务区域的业务服务通过发布业务区域的消息跨区域服务向订阅业务区域的业务服务进行跨区域消息发布。以此方式,可以在跨业务区域环境下,基于各区域内的消息跨区域服务按需进行不同区域之间消息的发布和订阅,提高跨业务区域的消息交互效率与安全性。
64.下面结合附图,通过具体的实施例对本公开实施例提供的基于信息目录的跨业务区域消息交互方法、装置、设备和存储介质进行详细地说明。
65.图1示出了一种能够在其中实现本公开的实施例的示例性运行环境的示意图,如图1所示,运行环境100中可以包括订阅业务区域和发布业务区域,其中,订阅业务区域和发布业务区域可以包括业务服务、消息服务端、消息跨区域服务、信息目录、跨区域网关等。
66.作为一个示例,订阅业务区域的业务服务可以通过订阅业务区域的消息跨区域服
务向发布业务区域的业务服务进行跨区域消息订阅。
67.具体地,订阅业务区域的业务服务可以向订阅业务区域的消息跨区域服务发送第一跨区域消息订阅请求。
68.订阅业务区域的消息跨区域服务根据第一跨区域消息订阅请求,在订阅业务区域的信息目录的订阅列表中添加订阅记录,并向发布业务区域的消息跨区域服务发送第二跨区域消息订阅请求,也即通过订阅业务区域和发布业务区域的跨区域网关向发布业务区域的消息跨区域服务发送第二跨区域消息订阅请求。
69.发布业务区域的消息跨区域服务根据第二跨区域消息订阅请求,在发布业务区域的信息目录的发布列表中添加发布记录,并向发布业务区域的消息服务端发送第三跨区域消息订阅请求。
70.发布业务区域的业务服务可以通过发布业务区域的消息跨区域服务向订阅业务区域的业务服务进行跨区域消息发布。
71.具体地,发布业务区域的业务服务可以向发布业务区域的消息服务端发送消息;
72.发布业务区域的消息服务端向发布业务区域的消息跨区域服务发送消息。
73.发布业务区域的消息跨区域服务对发布业务区域的发布列表进行查询,根据查询得到的发布记录中的订阅业务区域名,向订阅业务区域的消息跨区域服务发送消息,也即通过发布业务区域和订阅业务区域的跨区域网关向订阅业务区域的消息跨区域服务发送消息。
74.订阅业务区域的消息跨区域服务对订阅业务区域的信息目录的订阅列表进行查询,根据查询得到的订阅记录对消息的消息主题名进行调整,并向订阅业务区域的消息服务端发送消息;
75.订阅业务区域的消息服务端向对应的业务服务发送消息。
76.下面将详细介绍本公开实施例提供的基于信息目录的跨业务区域消息交互方法,其中,该消息交互方法可以应用于图1所示的运行环境100。
77.图2示出了本公开实施例提供的一种基于信息目录的跨业务区域消息交互方法的流程图,如图2所示,消息交互方法200可以包括以下步骤:
78.s210,订阅业务区域的业务服务通过订阅业务区域的消息跨区域服务向发布业务区域的业务服务进行跨区域消息订阅。
79.具体地,订阅业务区域的业务服务向订阅业务区域的消息跨区域服务发送第一跨区域消息订阅请求,其中,第一跨区域消息订阅请求可以包括:消息主题名、发布业务区域名、业务服务客户端号。
80.在一些实施例中,订阅业务区域的业务服务可以通过嵌入的消息客户端向订阅业务区域的消息服务端发送包括消息主题名和业务服务客户端号的消息订阅请求并记录在消息服务端的订阅列表,同时消息客户端可以根据消息主题名的形式进行判断,若为domainname.topicname即业务区域名 消息主题名的形式,则确定该消息订阅请求为订阅其他区域的请求,并将消息主题名更改为topicname的形式,然后向订阅业务区域的消息跨区域服务发送第一跨区域消息订阅请求,其中,第一跨区域消息订阅请求中的消息主题名为更改后的消息主题名,发布业务区域名为原消息主题名中的业务区域名,业务服务客户端号用于标识发起消息订阅的业务服务。
81.订阅业务区域的消息跨区域服务接收第一跨区域消息订阅请求,根据第一跨区域消息订阅请求,在订阅业务区域的信息目录的订阅列表中添加订阅记录,并向发布业务区域的消息跨区域服务发送第二跨区域消息订阅请求。
82.其中,订阅记录可以包括消息主题名、发布业务区域名、原发布业务区域名、业务服务客户端号,原发布业务区域名的内容为null也即空值。例如:订阅记录的形式可以为[topicname,publishdomain,outdatedpublishdomain,clientid],其中,topicname表示消息主题名,publishdomain表示发布业务区域名,outdatedpublishdomain表示原发布业务区域名,clientid表示业务服务客户端号。第二跨区域消息订阅请求可以包括:消息主题名、订阅业务区域名。
[0083]
在一些实施例中,订阅业务区域的消息跨区域服务若在订阅业务区域的订阅列表中查询到消息主题名、发布业务区域名与新添加的订阅记录中的消息主题名、发布业务区域名一致的订阅记录,则可以停止操作,快速完成跨区域消息订阅。
[0084]
订阅业务区域的消息跨区域服务若在订阅业务区域的订阅列表中未查询到消息主题名、发布业务区域名与新添加的订阅记录中的消息主题名、发布业务区域名一致的订阅记录,则可以向发布业务区域的消息跨区域服务发送第二跨区域消息订阅请求。
[0085]
例如:订阅业务区域的消息跨区域服务查询本区域的订阅列表中是否有消息主题名、发布业务区域名和新添加的订阅记录中的消息主题名、发布业务区域名一致的订阅记录,若有则返回值“2”;否则查询本区域的信息目录中的其他区域消息跨区域服务地址列表中是否有发布业务区域名对应的消息跨区域服务地址,若无则返回值“0”和本区域信息目录中的全区域信息目录地址,否则返回值“1”和发布业务区域名对应的消息跨区域服务地址。其中,全区域信息目录依托某个业务区域部署,运营人员在各个业务区域跨区域网关上建立区域内消息跨区域服务的对外映射地址,并将该地址注册到全区域信息目录,运营人员在全区域信息目录所在区域跨区域网关上建立全区域信息目录对外映射地址,并在各个区域跨区域网关上建立跨区域网关内部地址到全区域信息目录对外映射地址的映射;并且将上述各个区域跨区域网关内部映射地址注册在本区域的信息目录,其中全区域信息目录所在区域的信息目录地址上注册的是全区域信息目录所在区域内部地址。
[0086]
若订阅业务区域的消息跨区域服务接收到返回值“2”,则表示本区域已有其他业务服务订阅了同发布业务区域和同消息主题名的消息,则不再进行下一步操作。
[0087]
若订阅业务区域的消息跨区域服务接收到返回值“1”和发布业务区域名对应的消息跨区域服务地址,则表示本区域的其他区域消息跨区域服务地址列表存储有发布业务区域的消息跨区域服务地址,但是本区域无前述相同的订阅记录,则根据发布业务区域的消息跨区域服务地址向发布业务区域的消息跨区域服务发送第二跨区域消息订阅请求。
[0088]
若订阅业务区域的消息跨区域服务接收到返回值“0”和全区域信息目录地址,则表示本区域未发起过对发布业务区域的任何访问请求,所以未存储发布业务区域的消息跨区域服务地址,则本区域的消息跨区域服务拼接发布业务区域名(设定发布业务区域区域名为domain2)和“msg”为发布业务区域的消息跨区域服务名(domain2.msg),随后本区域的消息跨区域服务携带发布业务区域的消息跨区域服务名发起对全区域信息目录的访问,进而在从全区域信息目录获取到发布区域的消息跨区域服务在所在区域跨区域网关对外映射地址ip1也即发布业务区域的消息跨区域服务地址后,发起对本区域跨区域网关的地址
映射通道建立请求,建立订阅业务区域跨区域网关内部地址ip2到发布业务区域的消息跨区域服务地址ip1的映射,在本区域的其他区域消息跨区域服务地址列表中新加一条地址记录,其中servicename写入domain2.msg,inneraddress为ip2,outteraddress为ip1,可知,servicename表示服务名,inneraddress表示本区域跨区域网关内部地址也即本区域跨区域网关映射到某个服务的内部地址,outteraddress表示其他区域跨区域网关外部地址也即某个服务映射到所在区域跨区域网关的外部地址。进而可以根据发布业务区域的消息跨区域服务地址向发布业务区域的消息跨区域服务发送第二跨区域消息订阅请求。
[0089]
发布业务区域的消息跨区域服务接收第二跨区域消息订阅请求,根据第二跨区域消息订阅请求,在发布业务区域的信息目录的发布列表中添加发布记录,并向发布业务区域的消息服务端发送第三跨区域消息订阅请求。
[0090]
其中,发布记录以包括消息主题名、订阅业务区域名。例如:发布记录的形式可以为[topicname,subscribedomain],其中,topicname表示消息主题名,subscribedomain表示订阅业务区域名。第三跨区域消息订阅请求可以包括:消息主题名。
[0091]
在一些实施例中,发布业务区域的消息跨区域服务若在发布业务区域的发布列表中查询到消息主题名与新添加的发布记录中的消息主题名一致的发布记录,则可以停止操作,快速完成跨区域消息订阅。
[0092]
发布业务区域的消息跨区域服务若在发布业务区域的发布列表中未查询到消息主题名与新添加的发布记录中的消息主题名一致的发布记录,则可以向发布业务区域的消息服务端发送第三跨区域消息订阅请求。
[0093]
例如:发布业务区域的消息跨区域服务查询本区域的发布列表中是否有消息主题名与新添加的发布记录中的消息主题名一致的发布记录,若有则返回值“1”,否则返回“0”。
[0094]
若发布业务区域的消息跨区域服务接收到返回值“1”,则表示本区域的消息跨区域服务已接收到其他业务区域对同一消息主题的订阅请求,则不再进行下一步操作。
[0095]
若发布业务区域的消息跨区域服务接收到返回值“0”,则表示本区域的消息跨区域服务在此之前未接收到其他业务区域对对同一消息主题的订阅请求,则向本区域的消息服务端发送第三跨区域消息订阅请求,订阅消息主题名对应的消息。
[0096]
s220,发布业务区域的业务服务通过发布业务区域的消息跨区域服务向订阅业务区域的业务服务进行跨区域消息发布。
[0097]
具体地,发布业务区域的业务服务通过发布业务区域的消息服务端向发布业务区域的消息跨区域服务发送消息。
[0098]
发布业务区域的消息跨区域服务接收消息,对发布业务区域的发布列表进行查询,根据查询得到的发布记录中的订阅业务区域名,向订阅业务区域的消息跨区域服务发送消息。
[0099]
在一些实施例中,发布业务区域的消息跨区域服务若在发布业务区域的信息目录中的其他区域消息跨区域服务地址列表中查询到订阅业务区域名对应的消息跨区域服务地址,则根据查询到的消息跨区域服务地址,快速向订阅业务区域的消息跨区域服务发送消息。
[0100]
发布业务区域的消息跨区域服务若在发布业务区域的信息目录中的其他区域消息跨区域服务地址列表中未查询到订阅业务区域名对应的消息跨区域服务地址,则根据订
阅业务区域名,从全区域信息目录中获取订阅业务区域的消息跨区域服务地址,并根据获取的消息跨区域服务地址,快速向订阅业务区域的消息跨区域服务发送消息。
[0101]
例如:发布业务区域的消息跨区域服务携带消息主题名查询本区域的发布列表,获取订阅业务区域名,并查询本区域的其他区域消息跨区域服务地址列表中是否有订阅业务区域名对应的消息跨区域服务地址,若有则返回[“订阅业务区域名”,“1”,订阅业务区域的消息跨区域服务地址];否则返回[“订阅业务区域名”,“0”,全区域信息目录地址]。
[0102]
若发布业务区域的消息跨区域服务接收到的返回值为[“订阅业务区域名”,“0”,全区域信息目录地址],则根据订阅业务区域名,从全区域信息目录中获取订阅业务区域的消息跨区域服务地址,具体步骤与s210中示例类似,在此不再赘述。
[0103]
订阅业务区域的消息跨区域服务对订阅业务区域的信息目录的订阅列表进行查询,根据查询得到的订阅记录对消息的消息主题名进行调整,并向订阅业务区域的消息服务端发送消息。
[0104]
订阅业务区域的消息服务端向对应的业务服务发送消息,例如根据消息服务端的订阅列表向对应的业务服务的客户端推送消息。
[0105]
在一些实施例中,若查询得到的订阅记录中的原发布业务区域名为空值,则订阅业务区域的消息跨区域服务将发布业务区域名与消息的消息主题名拼接,将拼接得到的主题名作为消息的消息主题名,并向订阅业务区域的消息服务端发送息;
[0106]
若查询得到的订阅记录中的原发布业务区域名不为空值,则订阅业务区域的消息跨区域服务将原发布业务区域名与消息的消息主题名拼接,将拼接得到的主题名作为消息的消息主题名,并向订阅业务区域的消息服务端发送消息。
[0107]
例如订阅业务区域中的业务服务1在业务区域domain2订阅了消息domain2.topicname,业务服务2在业务区域domain3订阅了消息domain3.topicname,后续业务服务2更改了topicname的发布业务区域为domain2,则domain2返回的消息topicname既要给业务服务1又要给业务服务2;由于程序运行中主题名无法更改,则domain2返回的消息topicname需要同时以domain2.topicname和domain3.topicname为主题名发布到消息服务端,便于业务服务1和业务服务2同时接收,提高了跨区域环境下消息订阅的灵活性。
[0108]
根据本公开实施例,可以在跨业务区域环境下,基于各区域内的消息跨区域服务按需进行不同区域之间消息的发布和订阅,提高跨业务区域的消息交互效率与安全性。同时,若某个区域内多个业务服务需要相同的其他区域消息,其他区域只用传一次消息到本区域即可,不必传输多份相同消息,可以有效节省户外机动作业情况下的带宽。
[0109]
在一些实施例中,订阅业务区域的业务服务可以通过订阅业务区域的消息跨区域服务向发布业务区域的业务服务进行跨区域消息取消订阅。
[0110]
具体地,订阅业务区域的业务服务可以向订阅业务区域的消息跨区域服务发送第一跨区域消息取消订阅请求。其中,第一跨区域消息取消订阅请求包括:消息主题名、发布业务区域名、业务服务客户端号。
[0111]
订阅业务区域的消息跨区域服务接收第一跨区域消息取消订阅请求,若在订阅业务区域的订阅列表中查询到业务服务客户端号、消息主题名、发布业务区域名与第一跨区域消息取消订阅请求中的业务服务客户端号、消息主题名、发布业务区域名一致的订阅记录,则删除查询到的订阅记录。若在删除查询到的订阅记录后的订阅列表中查询到消息主
题名、发布业务区域名与第一跨区域消息取消订阅请求中的消息主题名、发布业务区域名一致的订阅记录,则完成跨区域消息取消订阅。若在删除查询到的订阅记录后的订阅列表中未查询到消息主题名、发布业务区域名与第一跨区域消息取消订阅请求中的消息主题名、发布业务区域名一致的订阅记录,则向发布业务区域的消息跨区域服务发送第二跨区域消息取消订阅请求。其中,第二跨区域消息取消订阅请求包括:消息主题名、订阅业务区域名。
[0112]
发布业务区域的消息跨区域服务接收第二跨区域消息取消订阅请求,删除发布业务区域的发布列表中消息主题名、订阅业务区域名与第二跨区域消息取消订阅请求中的消息主题名、订阅业务区域名一致的发布记录。若在删除查询到的发布记录后的发布列表中查询到消息主题名与第二跨区域消息取消订阅请求中的消息主题名一致的发布记录,则完成跨区域消息取消订阅。若在删除查询到的发布记录后的发布列表中未查询到消息主题名与第二跨区域消息取消订阅请求中的消息主题名一致的发布记录,则向发布业务区域的消息服务端发送第三跨区域消息取消订阅请求。其中,第三跨区域消息取消订阅请求包括:消息主题名。
[0113]
订阅业务区域的消息跨区域服务接收第三跨区域消息取消订阅请求,若在订阅业务区域的订阅列表中查询到业务服务客户端号、消息主题名、原发布业务区域名与第一跨区域消息取消订阅请求中的业务服务客户端号、消息主题名、发布业务区域名一致的订阅记录,则删除查询到的订阅记录,执行针对查询到的订阅记录对应的消息取消订阅流程,具体步骤与上述消息取消订阅步骤类似,在此不做赘述。
[0114]
如此一来,可以灵活取消消息订阅,提高用户使用体验。
[0115]
在一些实施例中,可以根据用户对订阅业务区域的订阅列表中的订阅记录输入的发布业务区域名内容,将订阅记录中原发布业务区域名的内容更新为订阅记录中发布业务区域名的内容,并将订阅记录中的发布业务区域名的内容更新为输入的发布业务区域名内容。
[0116]
例如:由于业务或者职能调整,区域domain1订阅的原先由区域domain2提供的topicname消息改为由区域domain3提供,则运营人员更改区域domain1的订阅列表中的订阅记录,将原订阅记录[topicname,domain2,null,clientid]更改为[topicname,domain3,domain2,clientid],更改完成后,区域domain1的信息目录发送通知到区域domain1的消息跨区域服务。
[0117]
订阅业务区域的消息跨区域服务若在订阅业务区域的订阅列表中查询到消息主题名和发布业务区域名与更新后的订阅记录的消息主题名和原发布业务区域名一致的订阅记录,则停止操作,完成跨区域消息取消订阅。
[0118]
订阅业务区域的消息跨区域服务若在订阅业务区域的订阅列表中未查询到消息主题名和发布业务区域名与更新后的订阅记录的消息主题名和原发布业务区域名一致的订阅记录,则取消订阅更新后的原发布业务区域中与更新后的订阅记录中的消息主题名对应的消息。可知,具体操作与前述取消订阅操作类似,在此不做赘述。
[0119]
订阅业务区域的消息跨区域服务若在订阅业务区域的订阅列表中查询到消息主题名和发布业务区域名与更新后的订阅记录的消息主题名和发布业务区域名一致的订阅记录,则完成跨区域消息订阅。
[0120]
订阅业务区域的消息跨区域服务若在订阅业务区域的订阅列表中未查询到消息主题名和发布业务区域名与更新后的订阅记录的消息主题名和发布业务区域名一致的订阅记录,则订阅更新后的发布业务区域中与更新后的订阅记录中的消息主题名对应的消息。可知,具体操作与前述订阅操作类似,在此不做赘述。
[0121]
如此一来,可以在不修改代码的情况下,更改消息发布区域,提高了跨区域环境下消息订阅的灵活性。
[0122]
下面可以结合图3,对本公开提供的消息交互方法进行详细说明,具体如下:
[0123]
如图3所示,包含如下四个业务区域:固定业务区域d1、机动业务区域d2、机动业务区域d3、固定业务区域d4,全区域信息目录依托区域d4开设。
[0124]
基于图3完成如下示例:
[0125]
示例1:区域d1的业务服务a订阅区域d4的消息d4.material;
[0126]
示例2:区域d1的业务服务e订阅区域d4的消息d4.material;
[0127]
示例3:区域d3的业务服务c订阅区域d4的消息d4.material;
[0128]
示例4:区域d4的业务服务d发布消息material;
[0129]
示例5:区域d1的业务服务a取消订阅区域d4的消息d4.material;
[0130]
示例6:区域d1的业务服务e取消订阅区域d4的消息d4.material;
[0131]
示例7:区域d3的业务服务c取消订阅区域d4的消息d4.material;
[0132]
示例8:区域d1的业务服务a订阅区域d2的消息d2.situation;
[0133]
示例9:机动业务区域职能调整,原先由区域d2提供的situation消息现在改由区域d3提供;
[0134]
示例10:区域d3的业务服务c发布消息situation;
[0135]
示例11:区域d1的业务服务a取消订阅d2.situation。
[0136]
首先,进行前置操作,具体如下:
[0137]
完成d1,d2,d3,d4四个业务区域开设,各个区域的区域名和跨区域网关对外地址如表1所示。
[0138]
表1
[0139]
domainnameaddressd110.10.10.1:9001d210.10.10.2:9001d310.10.10.3:9001d410.10.10.4:9001
[0140]
运营人员在区域d1、d2、d3、d4对应跨区域网关上建立各自区域区域内消息跨区域处理服务的对外地址,分别为:
[0141]
区域d1:10.10.10.1:9001/msg—》21.21.21.3:8003;
[0142]
区域d2:10.10.10.2:9001/msg—》22.22.22.3:8003;
[0143]
区域d3:10.10.10.3:9001/msg—》23.23.23.3:8003;
[0144]
区域d4:10.10.10.4:9001/msg—》24.24.24.3:8003。
[0145]
运营人员将上述地址注册在全区域信息目录中,如表2所示。
[0146]
表2
[0147]
servicenameaddressd1msg10.10.10.1:9001/msgd2msg10.10.10.2:9001/msgd3msg10.10.10.3:9001/msgd4msg10.10.10.4:9001/msg
[0148]
运营人员在区域d4的跨区域网关上建立全区域信息目录对外映射地址10.10.10.4:9001/gloinfoaddr—》24.24.24.5:8005。
[0149]
运营人员在区域d1、d2、d3对应跨区域网关上建立到全区域信息目录10.10.10.4:9001/gloinfoaddr的地址映射,分别为:
[0150]
区域d1:21.21.21.1:8001/gloinfoaddr—》10.10.10.4:9001/gloinfoaddr;
[0151]
区域d2:22.22.22.1:8001/gloinfoaddr—》10.10.10.4:9001/gloinfoaddr;
[0152]
区域d3:23.23.23.1:8001/gloinfoaddr—》10.10.10.4:9001/gloinfoadd。
[0153]
运营人员在本区域的信息目录上注册本区域的跨区域网关到全区域信息目录的映射地址,区域d4的信息目录上注册全区域信息目录区域内地址24.24.24.5:8005;区域d1上的注册信息如表2所示;消息跨区域服务中寻址全区域信息目录的服务名固定为gloinfoaddr。
[0154]
本区域的消息跨区域服务和信息目录中,寻址其他区域消息跨区域服务时,消息跨区域服务名采用domainname msg的形式,比如区域d1的消息跨区域服务的服务名为“d1msg”。
[0155]
示例1:区域d1的业务服务a订阅区域d4的消息d4.material,具体实现如下:
[0156]
区域d1的业务服务a通过嵌入的消息客户端携带clientid号clienta发起对消息d4.material的订阅请求。
[0157]
业务服务a嵌入的消息客户端发送对消息d4.material的订阅请求到区域d1消息服务端和消息跨区域服务。
[0158]
区域d1的消息跨区域服务接收到对消息d4.material的订阅请求后,往区域d1的信息目录中写入该订阅请求,如表3所示,在订阅列表的topicname字段写入“material”,publishdomain字段写入“d4”,outdatedpublishdomain字段写入“null”,clientid字段写入“clienta”。
[0159]
表3
[0160][0161]
区域d1的信息目录接收到上述订阅请求后,同时查询信息目录的订阅列表中是否有topicname字段为“material”、publishdomain字段为“d4”的订阅记录,若有则返回“2”;否则查询信息目录的其他区域消息跨区域服务地址列表中是否有区域d4的消息跨区域服务d4msg的地址信息,若无则返回“0”和全区域信息目录地址,否则返回“1”和区域d4的消息跨区域服务d4msg的地址信息。
[0162]
接上,本次设定为第一次订阅d4消息,则上一步区域d1的信息目录返回给消息跨区域服务的信息为“0”和全区域信息目录地址“21.21.21.1:8001/gloinfoaddr”。
[0163]
区域d1的消息跨区域服务接收到返回信息为“0”和全区域信息目录地址后,拼接区域名“d4”和“msg”为区域d4的消息跨区域服务名“d4msg”,然后携带“d4msg”发起对全区域信息目录的访问。
[0164]
区域d1的消息跨区域服务访问全区域信息目录映射在区域d1的跨区域网关的内部地址“21.21.21.1:8001/gloinfoaddr”后,将该请求映射到全区域信息目录映射在区域d4的跨区域网关的外部地址“10.10.10.4:9001/gloinfoaddr”,区域d4的跨区域网关将该外部地址映射到区域d4中的全区域信息目录内部地址“24.24.24.5:8005”。
[0165]
经过上述网关映射后,区域d1得消息跨区域服务从区域d4的全区域信息目录上获取到区域d4的消息跨区域服务在区域d4的跨区域网关上的对外地址“10.10.10.4:9001/msg”。
[0166]
区域d1的消息跨区域服务发起对本区域的跨区域网关的通道建立请求,建立区域d1的跨区域网关内部地址到区域d4的消息跨区域服务在区域d4的跨区域网关对外地址的映射,21.21.21.1:8001/d4msg—》10.10.10.4:9001/msg;(跨区域网关具有接收通道建立请求并对应建立地址映射通道的能力)。
[0167]
区域d1的消息跨区域服务将地址写入本区域的信息目录的其他区域消息跨区域服务地址列表中,其中servicename字段写入“d4msg”,inneraddress字段写入区域d1的跨
区域网关内部地址“21.21.21.1:8001/d4msg”,outteraddress字段写入区域d4的跨区域网关外部地址“10.10.10.4:9001/msg”;(跨区域网关外部地址“outteraddress”字段为非必须字段,该地址映射在跨区域网关中有存储)。
[0168]
区域d1的消息跨区域服务携带本区域区域名“d1”、需要订阅的消息主题名“material”访问区域d4的消息跨区域服务发起消息订阅请求。
[0169]
区域d4的消息跨区域服务接收到上述订阅请求后,往区域d4的信息目录中写入该订阅请求。
[0170]
区域d4的信息目录接收到上述订阅请求后,在发布列表中的topicname字段写入“material”,subscribedomain字段写入“d1”。
[0171]
接上,区域d4的信息目录接收到上述订阅请求后,查询发布列表中是否有其他区域对该消息主题“material”的订阅请求也即发布记录,若有则返回值“1”,否则返回“0”;设定区域d4的信息目录为第一次接收到他区域对消息主题“material”的订阅请求,则返回“0”给区域d4的消息跨区域服务。
[0172]
区域d4的消息跨区域服务接收到返回值“0”后,通过嵌入的消息客户端发起对区域d4的消息服务端上消息主题“material”的订阅请求;如此,则完成完整的业务服务a对消息主题名为“d4.material”的消息订阅请求。
[0173]
示例2:区域d1的业务服务e订阅区域d4的消息d4.material,具体实现如下:
[0174]
区域d1的业务服务e通过消息客户端携带clientid号cliente发起对消息d4.material的订阅请求。
[0175]
业务服务e嵌入的消息客户端发送对消息d4.material的订阅请求到区域d1的消息服务端和消息跨区域处理服务。
[0176]
区域d1的消息跨区域服务接收到业务服务e对消息d4.material的订阅请求后,往区域d1的信息目录中写入该订阅请求。
[0177]
区域d1的信息目录接收到上述订阅请求后,在订阅列表的topicname字段写入“material”,publishdomain字段写入“d4”,outdatedpublishdomain字段写入“null”,clientid字段写入“cliente”。
[0178]
区域d1的信息目录接收到上述订阅请求后,同时查询信息目录的订阅列表中是否有topicname字段为“material”、publishdomain字段为“d4”的订阅记录,若有则返回“2”;否则查询信息目录的其他区域消息跨区域服务地址列表中是否有区域d4的消息跨区域服务d4msg的地址信息,若无则返回“0”和全区域信息目录地址,否则返回“1”和区域d4的消息跨区域服务d4msg的地址信息。
[0179]
接上,本次为第二次订阅topicname字段为“material”、publishdomain字段为“d4”的消息,则区域d1的信息目录返回给消息跨区域服务“2”。
[0180]
区域d1的消息跨区域服务接收到本区域的信息目录返回值“2”后,代表本区域已经发起过对区域d4的消息material的订阅记录,则不再进行后续操作;如此,则完成区域d1的业务服务e对消息d4.material的订阅请求。
[0181]
示例3:区域d3的业务服务c订阅区域d4的消息d4.material,具体实现如下:
[0182]
设定区域d3为第一次订阅区域d4的消息d4.material,则基本流程与上述示例1类似,在此不做赘述。
[0183]
接上,区域d4的信息目录接收到订阅请求后,查询信息目录的发布列表中是否有其他区域对该消息主题“material”的订阅请求,若有则返回值“1”,否则返回“0”;由于区域d4的信息目录中的发布列表存储有区域d1发起的对消息d4.material的订阅请求即发布记录,此时区域d4的信息目录返回给区域d4的消息跨区域服务“1”。
[0184]
区域d4的消息跨区域服务接收到本区域的信息目录的返回值“1”后,则不需发起在区域d4的消息服务端对消息d4.material的订阅请求;如此则完成区域d3的业务服务c对消息d4.material的订阅请求。
[0185]
示例4:区域d4的业务服务d发布消息material,具体实现如下:
[0186]
区域d4的业务服务d发布topicname为“material”的消息到区域d4的消息服务端;
[0187]
区域d4的消息服务端推送topicname为“material”的消息到区域d4的消息跨区域服务(推送给区域d4的消息跨区域服务嵌入的消息客户端,一定程度上可以等同消息客户端为消息跨区域服务的一部分)。
[0188]
区域d4的消息跨区域服务接收到topicname为“material”的消息后,对应查询区域d4的信息目录中的发布列表,获取到发布列表中topicname“material”对应的subscribedomain信息为“d1”和“d3”;(如表4所示)。
[0189]
表4
[0190]
发布列表topicnamesubscribedomain materiald1 materiald3
[0191]
接上,区域d4的信息目录查询到订阅业务区域名“d1”和“d3”后,若区域d4的信息目录上有区域“d1”和“d3”的消息跨区域服务地址,则返回[“d1”,“1”,以及区域d1的消息跨区域服务地址],[“d3”,“1”,以及区域d3的消息跨区域服务地址];否则返回[“d1”,“0”,以及全区域信息目录地址],[“d3”,“0”,以及全区域信息目录地址]。
[0192]
接上,设定区域d4的信息目录有区域d1和区域d3的消息跨区域服务地址,也即信息目录返回给消息跨区域服务的信息为[“d1”,“1”,“24.24.24.1:8001/d1msg”],[“d3”,“1”,“24.24.24.1:8001/d3msg”]。
[0193]
区域d4的消息跨区域服务获取到上述信息后,发起对区域d1和区域d3的消息跨区域服务的访问,发送topicname为“material”的消息到对应区域的消息跨区域服务。
[0194]
区域d1的消息跨区域服务接收到上述消息后,查询本区域的信息目录的订阅列表中topicname为“material”、publishdomain为“d4”的订阅记录并返回outdatedpublishdomain信息,若outdatedpublishdomain信息均为“null”,表示区域d4返回的消息material无原订阅区域,则区域d1的消息跨区域服务将消息material发布到区域d1的消息服务端,随后区域d1的消息服务端将该消息推送到区域d1的业务服务a和e;区域d3处理过程与上述类似,在此不做赘述。
[0195]
示例5:区域d1的业务服务a取消订阅区域d4的消息d4.material,具体实现如下:
[0196]
区域d1的业务服务a通过消息客户端携带clientid号clienta发起对消息d4.material的取消订阅请求到区域d1的消息服务端和消息跨区域服务。
[0197]
区域d1的消息跨区域服务接收到上述消息取消订阅请求后,查询本区域的信息目录的订阅列表,查询topicname为“material”、clientid为“clienta”、publishdomain字段
或原发布区域outdatedpublishdomain字段为“d4”的订阅记录,查询结果为[“material”,“d4”,“null”,“clienta”]。
[0198]
区域d1的消息跨区域服务删除本区域的信息目录的订阅列表中上述记录,同时查询订阅列表中是否有其他topicname字段为“material”、publishdomain字段为“d4”的订阅记录,若有则返回值“1”,否则返回“0”;本例中返回值为“1”。
[0199]
区域d1的消息跨区域服务接收到返回值“1”后,代表本区域中有其他业务服务对消息d4.material的订阅请求,则区域d1消息跨区域服务不再进行后续操作。
[0200]
示例6:区域d1的业务服务e取消订阅区域d4的消息d4.material,具体实现如下:
[0201]
区域d1的业务服务e通过嵌入的消息客户端携带clientid号cliente发起对消息d4.material的取消订阅请求到区域d1的消息服务端和消息跨区域服务。
[0202]
区域d1的消息跨区域服务接收到上述消息取消订阅请求后,查询本区域的信息目录的订阅列表,查询topicname为“material”、clientid为“cliente”、publishdomain字段或outdatedpublishdomain字段为“d4”的订阅记录,查询结果为[“material”,“d4”,“null”,“cliente”]。
[0203]
区域d1的消息跨区域服务删除订阅列表中上述记录,同时查询订阅列表中是否有其他topicname字段为“material”、publishdomain字段为“d4”的记录,若有则返回值“1”,否则返回“0”;本例中返回值为“0”。
[0204]
区域d1的消息跨区域服务接收到返回值“0”后,代表本区域中无其他业务服务对消息d4.material的订阅请求,则区域d1的消息跨区域服务发起对消息d4.material的取消订阅请求。
[0205]
接上,区域d4的消息跨区域服务接收到区域d1的消息跨区域服务发送的对消息material的取消订阅请求后,查询区域d4的信息目录的发布列表,对应删除发布记录。
[0206]
接上,区域d4的消息跨区域服务同时查询本区域的发布列表是否有消息material的其他发布记录,若有则返回“1”,否则返回“0”;本例中返回值为“1”。
[0207]
区域d4的消息跨区域服务接收到返回值“1”后,代表区域d4的发布列表中有其他区域对消息material的订阅请求,则区域d4的消息跨区域服务不再进行后续操作。
[0208]
示例7:区域d3的业务服务c取消订阅区域d4的消息d4.material;,具体实现如下:
[0209]
区域d3的业务服务c发起对消息d4.material的取消订阅请求;后续流程与示例6类似,只是本例中返回值为“0”。
[0210]
区域d4的消息跨区域服务接收到返回值“0”后,代表区域d4的发布列表中无其他区域对消息material的订阅请求,则区域d4的消息跨区域服务通过嵌入的消息客户端访问区域d4的消息服务端发起对消息material的取消订阅请求。
[0211]
示例8:区域d1的业务服务a订阅区域d2的消息d2.situation,具体实现如下:
[0212]
区域d1的业务服务a订阅区域d2的消息d2.situation流程与前述订阅流程类似,在此不再赘述。
[0213]
示例9:机动业务区域职能调整,原先由区域d2提供的situation消息现在改由区域d3提供,具体实现如下:
[0214]
运营人员修改区域d1的信息目录的订阅列表中的[“situation”,“d2”,“null”,“clienta”]为[“situation”,“d3”,“d2”,“clienta”],表示clienta订阅的消息situation
原先由区域d2提供,现在改由区域d3提供;修改完成后,区域d1的信息目录发送通知给区域d1的消息跨区域服务(如表3所示)。
[0215]
区域d1的消息跨区域服务接收到上述通知后,查询区域d1的订阅列表中是否有topicname字段为“situation”、publishdomain字段为“d3”的订阅记录,若有则返回值“1”,否则返回值“0”;本例中没有其他相关记录,则信息目录给消息跨区域服务的返回值为“0”。
[0216]
区域d1的消息跨区域服务接收到返回值“0”后,代表区域d1当前无其他业务服务发起过对区域d3的topicname为“situation”的消息订阅请求,则区域d1的消息跨区域服务携带topicname字段为“situation”信息发起对区域d3的消息订阅请求。
[0217]
区域d3的消息跨区域服务接收到上述订阅请求后,访问本区域的信息目录,在发布列表的[“topicname”,“subscribedomain”]字段分别写入[“situation”,“d1”]。
[0218]
区域d3的消息跨区域服务对上述订阅请求的操作与前述示例类似,在此不再赘述。
[0219]
与此同时,区域d1的消息跨区域服务接收到上述通知后,查询区域d1的信息目录的订阅列表中是否有topicname字段为“situation”、publishdomain字段为“d2”的记录,若有则返回“1”,否则返回值“0”;本例中没有其他相关记录,则信息目录给消息跨区域服务的返回值为“0”。
[0220]
区域d1的消息跨区域服务接收到返回值“0”后,代表区域d1当前无其他业务服务发起过对区域d2的topicname为“situation”的消息订阅请求,则区域d1的消息跨区域服务携带topicname字段为“situation”发起对区域d2的消息取消订阅请求。
[0221]
区域d2消息跨区域服务接收到上述取消订阅请求后,后续操作与前述取消订阅操作类似,在此不再赘述。
[0222]
示例10:区域d3的业务服务c发布消息situation,具体实现如下:
[0223]
区域d3的业务服务c通过嵌入的消息客户端发布消息situation到消息服务端,消息服务端将该消息推送给区域d3的消息跨区域服务嵌入的消息客户端。
[0224]
区域d3的消息跨区域服务接收到该消息后,查询本区域的信息目录的发布列表中topicname为“situation”的记录,查询结果为[“situation”,“d1”](如表5所示)。
[0225]
表5
[0226]
发布列表topicnamesubscribedomain situationd1
[0227]
区域d2的消息跨区域服务根据subscribedomain字段值“d1”,向区域d1的消息跨区域服务发送消息situation。
[0228]
区域d1的消息跨区域服务接收到区域d3发送过来的消息situation,查询本区域的信息目录的订阅列表中topicname为“situation”,publishdomain为“d3”的订阅记录,返回outdatedpublishdomain字段值为“d2”。
[0229]
区域d1的消息跨区域服务接收到返回值“d2”后,拼接outdatedpublishdomain值“d2”和topicname值“situation”为d2.situation。
[0230]
区域d1的消息跨区域服务将从区域d3接收到的situation消息以d2.situation为topicname发布到区域d1的消息服务端;随后消息服务端通过查询自身的订阅列表将该消息推送给区域d1的业务服务a。
[0231]
示例11:区域d1的业务服务a取消订阅d2.situation,具体实现如下:
[0232]
区域d1的业务服务a通过嵌入的消息客户端发起对消息d2.situation的取消订阅请求,消息客户端将该取消订阅请求发送给区域d1的消息服务端和消息跨区域服务。
[0233]
区域d1的消息跨区域服务接收到上述消息取消订阅请求后,通过[topicname,clientid]值[“situation”,“clienta”],以及publishdomain字段或outdatedpublishdomain字段值“d2”查询本区域的信息目录的订阅列表,信息目录返回[publishdomain,outdatedpublishdomain]值为[“d3”,“d2”]。
[0234]
区域d1的消息跨区域服务接收到上述返回结果后,outdatedpublishdomain字段不为空,发起对区域d3的消息situation的消息取消订阅请求。
[0235]
区域d3的消息跨区域服务接收到上述取消订阅请求后,后续操作与前述相关步骤类似,在此不再赘述。
[0236]
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
[0237]
以上是关于方法实施例的介绍,以下通过装置实施例,对本公开所述方案进行进一步说明。
[0238]
图4示出了根据本公开的实施例提供的一种基于信息目录的跨业务区域消息交互装置的结构图,如图4所示,消息交互装置400可以包括:
[0239]
订阅模块410,用于订阅业务区域的业务服务通过订阅业务区域的消息跨区域服务向发布业务区域的业务服务进行跨区域消息订阅。
[0240]
其中,订阅业务区域的业务服务向订阅业务区域的消息跨区域服务发送第一跨区域消息订阅请求。
[0241]
订阅业务区域的消息跨区域服务根据第一跨区域消息订阅请求,在订阅业务区域的信息目录的订阅列表中添加订阅记录,并向发布业务区域的消息跨区域服务发送第二跨区域消息订阅请求。
[0242]
发布业务区域的消息跨区域服务根据第二跨区域消息订阅请求,在发布业务区域的信息目录的发布列表中添加发布记录,并向发布业务区域的消息服务端发送第三跨区域消息订阅请求。
[0243]
发布模块420,用于发布业务区域的业务服务通过发布业务区域的消息跨区域服务向订阅业务区域的业务服务进行跨区域消息发布。
[0244]
其中,发布业务区域的业务服务通过发布业务区域的消息服务端向发布业务区域的消息跨区域服务发送消息。
[0245]
发布业务区域的消息跨区域服务对发布业务区域的发布列表进行查询,根据查询得到的发布记录中的订阅业务区域名,向订阅业务区域的消息跨区域服务发送消息。
[0246]
订阅业务区域的消息跨区域服务对订阅业务区域的信息目录的订阅列表进行查询,根据查询得到的订阅记录对消息的消息主题名进行调整,并向订阅业务区域的消息服务端发送消息。
[0247]
订阅业务区域的消息服务端向对应的业务服务发送消息。
[0248]
可以理解的是,图4所示的消息交互装置400中的各个模块/单元具有实现本公开实施例提供的消息交互方法200中的各个步骤的功能,并能达到其相应的技术效果,为了简洁,在此不再赘述。
[0249]
图5示出了一种可以用来实施本公开的实施例的电子设备的结构图。电子设备500旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备500还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
[0250]
如图5所示,电子设备500可以包括计算单元501,其可以根据存储在只读存储器(rom)502中的计算机程序或者从存储单元508加载到随机访问存储器(ram)503中的计算机程序,来执行各种适当的动作和处理。在ram503中,还可存储电子设备500操作所需的各种程序和数据。计算单元501、rom502以及ram503通过总线504彼此相连。输入/输出(i/o)接口505也连接至总线504。
[0251]
电子设备500中的多个部件连接至i/o接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许电子设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0252]
计算单元501可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元501的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元501执行上文所描述的各个方法和处理,例如方法200。例如,在一些实施例中,方法200可被实现为计算机程序产品,包括计算机程序,其被有形地包含于计算机可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由rom502和/或通信单元509而被载入和/或安装到设备500上。当计算机程序加载到ram503并由计算单元501执行时,可以执行上文描述的方法200的一个或多个步骤。备选地,在其他实施例中,计算单元501可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法200。
[0253]
本文中以上描述的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、片上系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
[0254]
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的
功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
[0255]
在本公开的上下文中,计算机可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。计算机可读介质可以是计算机可读信号介质或计算机可读储存介质。计算机可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。计算机可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0256]
需要注意的是,本公开还提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行方法200,并达到本公开实施例执行其方法达到的相应技术效果,为简洁描述,在此不再赘述。
[0257]
另外,本公开还提供了一种计算机程序产品,该计算机程序产品包括计算机程序,计算机程序在被处理器执行时实现方法200。
[0258]
为了提供与用户的交互,可以在计算机上实施以上描述的实施例,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
[0259]
可以将以上描述的实施例实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
[0260]
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
[0261]
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
[0262]
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献