CN117061636A - 消息交换方法和装置 - Google Patents
消息交换方法和装置 Download PDFInfo
- Publication number
- CN117061636A CN117061636A CN202311132751.4A CN202311132751A CN117061636A CN 117061636 A CN117061636 A CN 117061636A CN 202311132751 A CN202311132751 A CN 202311132751A CN 117061636 A CN117061636 A CN 117061636A
- Authority
- CN
- China
- Prior art keywords
- message
- switching service
- information
- middleware
- service
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 74
- 238000013507 mapping Methods 0.000 claims description 28
- 230000004044 response Effects 0.000 claims description 17
- 238000012546 transfer Methods 0.000 claims description 16
- 238000004458 analytical method Methods 0.000 claims description 2
- 230000005540 biological transmission Effects 0.000 abstract description 10
- 238000012545 processing Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000011144 upstream manufacturing Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 210000001503 joint Anatomy 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/169—Special adaptations of TCP, UDP or IP for interworking of IP based networks with other networks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提出一种消息交换方法和装置,涉及互联网领域。其中,方法包括:交换服务集群从第一消息中间件中拉取至少一个第一报文消息;对任一第一报文消息进行解析,得到第一交易关键字;其中,第一交易关键字用于指示任一第一报文消息所属的业务;根据第一交易关键字,确定第一消息接收端的第一地址信息;根据第一地址信息,将任一第一报文消息发送至第一消息接收端。由此,可以通过交换服务集群来实现消息发送端和消息接收端之间的消息交换,在报文消息传输时,可以基于网络协议(如HTTP、TCP、RPC等)传输,而无需在消息发送端和消息接收端之间集成SDK,可以降低对应用系统的代码的侵入性。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种消息交换方法和装置。
背景技术
消息中间件是分布式系统中重要的组件,主要解决应用耦合、异步消息、流量削锋、日志处理等问题,实现高性能、高可用、可伸缩和最终一致性架构。
目前,消息发送端(或称为消息生产端)以应用中集成消息SDK(SoftwareDevelopment Kit,软件开发工具包)的方式,将消息发送至消息中间件,或者,消息接收端(或称为消息消费端)以应用中集成消息SDK包方式,从消息中间件拉取或消费消息。
然而上述方式,需要消息发送端和消息接收端同时嵌入消息SDK并开发相关代码方可使用,对消息发送端和消息接收端所在的应用系统的代码的侵入性较强。
发明内容
本申请旨在至少在一定程度上解决相关技术中的技术问题之一。
本申请的一个方面提出一种消息交换方法和装置,以实现通过交换服务集群来实现消息发送端和消息接收端之间的消息交换,在报文消息传输时,可以基于网络协议(如HTTP、TCP、RPC等)传输,而无需在消息发送端和消息接收端之间集成SDK,可以降低对应用系统的代码的侵入性。并且,消息发送端和消息接收端之间无需关注消息主题等技术性参数,消息发送端只需向交换服务集群发送报文消息即可,由交换服务集群根据报文消息中的交易关键字,将报文消息路由到对应的主题中,可以降低消息发送端和消息接收端侧的代码复杂程度和使用难度。
本申请第一方面实施例提出了一种消息交换方法,应用于交换服务集群,包括:
从第一消息中间件中,拉取至少一个第一报文消息;其中,所述第一报文消息是所述交换服务集群在接收到第一消息发送端发送的所述第一报文消息后路由至所述第一消息中间件中的;
针对任一第一报文消息,对所述任一第一报文消息进行解析,以得到第一交易关键字;其中,所述第一交易关键字用于指示所述任一第一报文消息所属的业务;
根据所述第一交易关键字,确定第一消息接收端的第一地址信息;
根据所述第一地址信息,将所述任一第一报文消息发送至所述第一消息接收端。
本申请第二方面实施例提出了一种消息交换装置,应用于交换服务集群,包括:
拉取模块,用于从第一消息中间件中,拉取至少一个第一报文消息;其中,所述第一报文消息是所述交换服务集群在接收到第一消息发送端发送的所述第一报文消息后路由至所述第一消息中间件中的;
解析模块,用于针对任一第一报文消息,对所述任一第一报文消息进行解析,以得到第一交易关键字;其中,所述第一交易关键字用于指示所述任一第一报文消息所属的业务;
确定模块,用于根据所述第一交易关键字,确定第一消息接收端的第一地址信息;
发送模块,用于根据所述第一地址信息,将所述任一第一报文消息发送至所述第一消息接收端。
本申请第三方面实施例提出了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时,实现如本申请第一方面实施例提出的消息交换方法。
本申请第四方面实施例提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请第一方面实施例提出的消息交换方法。
本申请第五方面实施例提出了一种计算机程序产品,当所述计算机程序产品中的指令由处理器执行时,执行如本申请第一方面实施例提出的消息交换方法。
本申请上述实施例提供的技术方案至少带来以下有益效果:
1、通过交换服务集群来实现消息发送端和消息接收端之间的消息交换,在报文消息传输时,可以基于网络协议(如HTTP、TCP、RPC等)传输,而无需在消息发送端和消息接收端之间集成SDK,可以降低对应用系统的代码的侵入性。并且,消息发送端和消息接收端之间无需关注消息主题等技术性参数,消息发送端只需向交换服务集群发送报文消息即可,由交换服务集群根据报文消息中的交易关键字,将报文消息路由到对应的主题中,可以降低消息发送端和消息接收端侧的代码复杂程度和使用难度。此外,使用交换服务集群来交换消息,只需要使用简单的API(Application Programming Interface,应用程序接口),就能够快速和高效地发送消息和查询消息,使用门槛较低,能够快速融入业务使用。
2、交换服务集群中的各个交换服务只将身份认证通过的消息发送端所发送的报文消息,路由至消息中间件,而将身份认证未通过的消息发送端所发送的报文消息直接丢弃,可以提升业务系统的安全性。
3、在报文消息推送失败时,可以设置报文消息推送到DB(DataBase,数据库)进行持久化存储,定时重试,以提升报文消息交换的成功性,在报文消息推送成功后,可以删除DB中存储的报文消息,以降低存储开销;并且,在交换服务集群中的单个交换服务故障时,可以将报文消息自动迁移到其他可用的交换服务,以提升报文消息交换的成功性。
本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本申请实施例所提供的一种消息交换方法流程示意图;
图2为本申请实施例所提供的另一种消息交换方法的流程示意图;
图3为本申请实施例所提供的另一种消息交换方法的流程示意图;
图4为本申请实施例所提供的另一种消息交换方法的流程示意图;
图5为本申请实施例所提供的另一种消息交换方法的流程示意图;
图6为本申请实施例所提供的系统架构示意图;
图7为本申请实施例所提供的一种消息交换装置的结构示意图;
图8是本申请一示例性实施例所示出的电子设备的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
消息中间件,也叫消息队列,它主要解决应用耦合、异步消息、流量削锋、日志处理等问题,它是类似于数据库一样需要独立部署在服务器上的一种应用,提供接口给其他系统调用。
目前,消息发送端和消息接收端以应用中集成消息SDK的方式,使用消息中间件。该方式需要消息发送端和消息接收端同时嵌入消息SDK并开发相关代码方可使用,对消息发送端和消息接收端所在的应用系统的代码的侵入性较强。
针对上述存在的问题,本申请的一个方面提出了一种消息交换方法和装置。
下面参考附图描述本申请实施例的消息交换方法和装置。在具体描述本申请实施例之前,为了便于理解,首先对常用技术词进行介绍:
Kafka,是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者(或称为消费端)在网站中的所有动作流数据。
RocketMQ,是一种开源的分布式消息中间件。
ZeroMQ,是一种轻量级消息通信库,在对传统的标准socket接口扩展的基础上形成的特色消息中间件。
IP,是指网际互连协议(Internet Protocol)的缩写。
MQ,是指消息队列(Message Queue)的缩写。
MQTT,是指消息队列遥测传输协议(Message Queuing Telemetry Transport)的缩写,其是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议。
HTTP,是指超文本传输协议(Hypertext Transfer Protocol)的缩写。
TCP,是指传输控制协议(Transmission Control Protocol)的缩写。
RPC,是指远程调用(Remote Procedure Call)的缩写。
URL,是指统一资源定位符(Uniform Resource Locator)的缩写。
图1为本申请实施例所提供的一种消息交换方法的流程示意图。
本申请实施例所提供的消息交换方法,可以应用于交换服务集群,比如,可以应用于交换服务集群中的任意一个可用的交换服务(或称为交换服务节点)。
如图1所示,该消息交换方法可以包括以下步骤:
步骤S101,从第一消息中间件中,拉取至少一个第一报文消息;其中,第一报文消息是交换服务集群在接收到第一消息发送端发送的第一报文消息后路由至第一消息中间件中的。
其中,第一消息发送端可以为任意一个消息发送端(或称为消息生产端、消息生产者)。其中,消息发送端可以为生产消息的客户端或发送消息的客户端,其中,客户端可以运行在设备上,为用户提供服务的软件程序等,或者,客户端可以为使用MQTT的程序或设备。其中,设备例如可以为个人电脑、移动终端、服务器等,移动终端例如可以为手机、平板电脑、个人数字助理、穿戴式设备、智能机器人等具有各种操作系统、触摸屏和/或显示屏的硬件设备。
在本申请实施例中,第一消息发送端可以基于网络协议(如HTTP、TCP、RPC协议等)向交换服务集群发送第一报文消息,以使交换服务集群将第一报文消息路由至第一消息中间件中。
例如,第一消息发送端可以基于网络协议,向交换服务集群中的交换服务(该交换服务可以为第一交换服务(其中,第一交换服务可以为交换服务集群中任意一个可用的交换服务),或者也可以为交换服务集群中除第一交换服务之外的其他交换服务,本申请中,将第一交换服务或其他交换服务统称为目标交换服务)发送第一报文消息。
作为一种示例,以网络协议为HTTP协议进行示例,第一消息发送端可以对接HTTP请求接口,该第一消息发送端可以通过该接口向交换服务集群中的目标交换服务发送第一报文消息。
在本申请实施例中,交换服务集群中的目标交换服务在接收到第一消息发送端所发送的第一报文消息后,可以将第一报文消息路由至第一消息中间件中,例如,将第一报文消息路由至第一消息中间件的第一主题下。
在本申请实施例中,交换服务集群可以从第一消息中间件中,拉取或消费至少一个第一报文消息,比如,以该方法应用于交换服务集群中第一交换服务进行示例,第一交换服务可以订阅各个消息中间件中的主题,或者,第一交换服务可以订阅部分消息中间件中的主题,从而第一交换服务可以从第一消息中间件的第一主题中,拉取或消费至少一个第一报文消息。其中,第一主题为第一交换服务订阅的主题。
其中,主题是消息中间件中不同业务订阅的分类,例如记账通知、短信通知等。
需要说明的是,不同的消息发送端生成的报文消息所涉及的主题可以不同,比如,上游系统(或上游业务系统)中的消息发送端1生成的报文消息1涉及的主题为记账通知,消息发送端2生成的报文消息2涉及的主题为短信通知,则交换服务集群可以将消息发送端1发送的报文消息1路由至第一消息中间件的记账通知下,将消息发送端2发送的报文消息2路由至第一消息中间件的短信通知下。
步骤S102,针对任一第一报文消息,对该任一第一报文消息进行解析,以得到第一交易关键字,其中,第一交易关键字用于指示该任一第一报文消息所属的业务。
在本申请实施例中,第一交易关键字,用于指示对应第一报文消息所属的业务。比如,第一交易关键字可以为第一报文消息中具有业务唯一特性的字段,例如系统编号等,该系统编号可以为第一消息发送端所属系统的编号,该系统与一个业务对应。
在本申请实施例中,针对拉取的任意的一个第一报文消息,交换服务集群可以对该第一报文消息进行解析,以得到该第一报文消息中的交易关键字(本申请中记为第一交易关键字)。
步骤S103,根据第一交易关键字,确定第一消息接收端的第一地址信息。
在本申请实施例中,交换服务集群可以根据第一交易关键字,确定第一消息接收端(如订阅第一主题的消息接收端)的地址信息(本申请中记为第一地址信息,如URL地址信息)。
比如,以该方法应用于交换服务集群中第一交换服务进行示例,第一交换服务可以根据第一报文消息中的第一交易关键字,确定订阅第一主题的第一消息接收端的第一地址信息。
在本申请实施例的一种可能的实现方式中,可以预先在交换服务集群中的各个交换服务侧配置不同的交易关键字和消息接收端的地址信息之间的映射关系(本申请中记为第二映射关系)。例如,各个交换服务(包括第一交换服务)可以接收相关人员触发的配置指令,根据该配置指令,配置不同的交易关键字、消接收端的地址信息之间的第二映射关系,并存储该第二映射关系。
从而本申请中,可以根据第一交易关键字,查询上述第二映射关系,以确定订阅第一主题的第一消息接收端的第一地址信息。
步骤S104,根据第一地址信息,将该任一第一报文消息发送至第一消息接收端。
在本申请实施例中,交换服务集群可以根据第一地址信息,将上述第一报文消息发送至第一消息接收端。
本申请实施例的消息交换方法,通过交换服务集群从第一消息中间件中拉取至少一个第一报文消息;其中,第一报文消息是交换服务集群在接收到第一消息发送端发送的第一报文消息后路由至第一消息中间件中的;针对任一第一报文消息,对任一第一报文消息进行解析,以得到第一交易关键字;其中,第一交易关键字用于指示任一第一报文消息所属的业务;根据第一交易关键字,确定第一消息接收端的第一地址信息;根据第一地址信息,将任一第一报文消息发送至第一消息接收端。由此,可以通过交换服务集群来实现消息发送端和消息接收端之间的消息交换,在报文消息传输时,可以基于网络协议(如HTTP、TCP、RPC等)传输,而无需在消息发送端和消息接收端之间集成SDK,可以降低对应用系统的代码的侵入性。并且,消息发送端和消息接收端之间无需关注消息主题等技术性参数,消息发送端只需向交换服务集群发送报文消息即可,由交换服务集群根据报文消息中的交易关键字,将报文消息路由到对应的主题中,可以降低消息发送端和消息接收端侧的代码复杂程度和使用难度。
为了清楚说明本申请任一实施例中交换服务集群是如何将第一报文消息路由至第一消息中间件的第一主题下的,本申请还提出一种消息交换方法。
图2为本申请实施例所提供的另一种消息交换方法的流程示意图。
如图2所示,在图1所示实施例的基础上,交换服务集群(或交换服务集群中的目标交换服务)可以通过以下步骤,将第一报文消息路由至第一消息中间件中:
步骤S201,接收至少一个第一消息发送端发送的第一报文消息。
其中,第一消息发送端的数量可以为一个,或者也可以为多个,本申请对此并不作限制。
在本申请实施例中,交换服务集群(或交换服务集群中的目标交换服务)可以接收至少一个第一消息发送端发送的第一报文消息。
作为一种可能的实现方式,第一消息发送端可以与目标交换服务直接通信,这种情况下,目标交换服务获取第一报文消息的方式,例如可以为:
1、第一消息发送端侧可以设置或配置有交换服务集群中的至少一个交换服务的地址信息;
2、第一消息发送端在发送第一报文消息之前,可以从至少一个交换服务中选择目标交换服务。例如,可以从至少一个交换服务中随机选择一个目标交换服务,或者,可以从至少一个交换服务中选择最近通信的目标交换服务,或者,可以从至少一个交换服务中按序选择一个目标交换服务(比如,第一消息发送端最近一次或上一次采用第N个交换服务发送报文消息,则本次可以将第N+1个交换服务作为目标交换服务),等等,本申请对此并不作限制;
3、第一消息发送端可以根据目标交换服务的第二地址信息,将第一报文消息发送至目标交换服务。
相应的,目标交换服务可以获取第一消息发送端发送的第一报文消息。
作为另一种可能的实现方式,第一消息发送端可以与目标交换服务间接通信,这种情况下,目标交换服务获取第一报文消息的方式,例如可以为:
1、目标交换服务可以接收交换服务集群中的调度器发送的调度信息。
其中,调度信息通过下述方式生成并发送至目标交换服务:调度器在接收到任意的一个第一消息发送端发送的第一报文消息后,根据交换服务集群中的各个交换服务的负载信息和状态信息,从各个交换服务中确定目标交换服务,根据该第一消息发送端发送的第一报文消息生成调度信息,并将该调度信息发送至目标交换服务。
在本申请实施例中,状态信息可以包括可用状态和不可用状态,例如,可以通过心跳检测算法,确定各个交换服务的状态信息。举例而言,调度器可以向交换服务集群中的各个交换服务发送用于心跳检测的数据包,若调度器接收到各个交换服务响应于上述数据包所发送的心跳响应,则调度器可以确定各个交换服务的状态信息为可用状态,而若交换服务未接收到某个交换服务发送的心跳响应,则可以确定该交换服务的状态信息为不可用状态。
在本申请实施例中,交换服务的负载信息,可以根据交换服务的资源(如CPU、内存等资源)使用指标确定,例如,资源使用指标越高(如CPU占用率越高、内存使用率越高),交换服务的负载越高,反之,资源使用指标越低,交换服务的负载越低。
在本申请实施例中,调度器可以根据各个交换服务的状态信息和负载信息,确定各个交换服务的目标权重,根据各个交换服务的目标权重,从各个交换服务中确定目标权重最大的目标交换服务。并且,调度器还可以根据该第一消息发送端发送的第一报文消息生成调度信息,并将该调度信息发送至目标交换服务。相应的,目标交换服务可以接收该调度信息。
作为一种可能的实现方式,任意一个交换服务的目标权重的计算方式,例如为:根据交换服务的状态信息,确定交换服务的第一权重,其中,状态信息为可用状态的交换服务的第一权重,高于状态信息为不可用状态的交换服务的第一权重;根据交换服务的负载信息,确定交换服务的第二权重,其中,第二权重与负载信息呈负相关关系,即负载越高,第二权重越低,反之,负载越低,第二权重越高;根据交换服务的第一权重和第二权重,确定交换服务的目标权重。
作为一种示例,目标权重的计算方式,例如为:可以将交换服务的第一权重和第二权重之和、均值、加权求和值,作为该交换服务的目标权重。
作为另一种示例,目标权重的计算方式,例如为:获取该交换服务的硬件性能指标和响应时延(或处理时延、传输时延),并根据硬件性能指标和响应时延,确定该交换服务的第三权重,其中,第三权重与响应时延呈负相关关系(即,响应时延越短,第三权重越高,反之,响应时延越长,第三权重越低),并且,第三权重与硬件性能指标呈正相关关系(即,硬件性能指标越低,第三权重越低,反之,硬件性能指标越高,第三权重越高)。
从而本公开中,可以根据第一权重、第二权重和第三权重,确定该交换服务的目标权重。
例如,可以将该交换服务的第一权重、第二权重和第三权重中的其中一项,作为该交换服务的目标权重。
又例如,可以根据该交换服务的第一权重、第二权重和第三权重中的其中两项,确定该交换服务的目标权重。比如,可以将其中两项之和,或,将其中两项的均值,或,将其中两项的加权和,作为该交换服务的目标权重。
再例如,可以同时根据该交换服务的第一权重、第二权重和第三权重,确定该交换服务的目标权重。比如,可以将该交换服务的第一权重、第二权重和第三权重的累加和、均值、加权求和值等,作为该交换服务的目标权重。
2、目标交换服务可以从调度信息中获取第一报文消息。
在本申请实施例中,目标交换服务可以从调度信息中提取第一报文消息。
由此,可以实现通过不同方式,将第一报文消息发送至交换服务集群中的目标交换服务,可以提升该方法的灵活性和适用性。
步骤S202,针对任意第一报文消息,对该任意第一报文消息进行解析,以得到第一交易关键字。
其中,第一交易关键字,用于指示该任意第一报文消息所属的业务。
在本申请实施例中,针对任意的一个第一报文消息,交换服务集群(或交换服务集群中的目标交换服务)可以对该第一报文消息进行解析,以得到该第一报文消息中的第一交易关键字。
步骤S203,查询与第一交易关键字具有映射关系的第一主题和第一标识信息。
在本申请实施例中,第一标识信息,用于唯一标识第一消息中间件,比如,第一标识信息可以为第一消息中间件的名称等。
在本申请实施例中,交换服务集群(或交换服务集群中的目标交换服务)可以查询与该第一交易关键字具有映射关系的第一主题和第一标识信息。
作为一种可能的实现方式,可以预先在交换服务集群中的各个交换服务侧配置不同的交易关键字、消息中间件的标识信息和主题(或称为消息主题)之间的映射关系(本申请中记为第一映射关系)。例如,各个交换服务(包括目标交换服务)可以接收相关人员触发的配置指令,根据该配置指令,配置不同的交易关键字、主题与消息中间件的标识信息之间的第一映射关系,并存储该第一映射关系。
从而本申请中,目标交换服务可以根据第一交易关键字查询上述第一映射关系,得到与该第一交易关键字具有映射关系的第一主题和第一标识信息。
由此,通过查询方式,确定第一报文消息待路由至的消息中间件和主题信息,操作简单,且易于实现,可以提升交换服务集群(或交换服务集群中的目标交换服务)的处理效率,提升消息交换效率。
步骤S204,将该任意第一报文消息,发送至第一消息中间件中的第一主题下;其中,第一消息中间件是至少一个消息中间件中与第一标识信息匹配的消息中间件。
在本申请实施例中,交换服务集群(或交换服务集群中的目标交换服务)可以将上述第一报文消息,发送或路由至第一消息中间件中的第一主题下。
本申请实施例的消息交换方法,消息发送端无需关注消息主题等技术性参数,消息发送端只需向交换服务集群发送报文消息即可,由交换服务集群根据报文消息中的交易关键字,将报文消息路由到对应的主题中,可以降低消息发送端的代码复杂程度和使用难度。
为了清楚说明上述任一实施例,本申请还提出一种消息交换方法。
图3为本申请实施例所提供的另一种消息交换方法的流程示意图。
如图3所示,在图1所示实施例的基础上,交换服务集群(或交换服务集群中的目标交换服务)可以通过以下步骤,将第一报文消息路由至第一消息中间件的第一主题下:
步骤S301,接收至少一个第一消息发送端发送的第一报文消息。
步骤S302,针对任意第一报文消息,对任意第一报文消息进行解析,以得到第一交易关键字和身份认证信息。
步骤S301至S302的解释说明可以参见本申请任一实施例中的相关描述,在此不做赘述。
在本申请实施例中,第一报文消息中不仅可以包括第一交易关键字,还可以包括身份认证信息,其中,身份认证信息可以包括人脸认证信息、指纹认证信息、密码认证信息等用于身份认证或鉴权的信息。
步骤S303,根据身份认证信息,对发送该任意第一报文消息的第一消息发送端进行身份认证。
在本申请实施例中,为了保证业务系统的安全性,并非是任意的一个消息发送端所发送的报文消息均能路由至消息中间件的,而是,只能将身份认证通过的消息发送端所发送的报文消息理由至消息中间件。
具体地,针对任意的一个第一报文消息,交换服务集群(或交换服务集群中的目标交换服务)可以根据该第一报文消息中的身份认证信息,对发送该第一报文消息的第一消息发送端进行身份认证。例如,可以预先存储具有权限的各个消息发送端的权限信息(或鉴权信息),交换服务集群(或交换服务集群中的目标交换服务)可以将该第一报文消息中的身份认证信息与各个消息发送端的权限信息(或鉴权信息)进行匹配,如果该第一报文消息中的身份认证信息与其中一个权限信息(或鉴权信息)匹配,则可以确定发送该第一报文消息的第一消息发送端认证通过,而如果该第一报文消息中的身份认证信息与所有的权限信息(或鉴权信息)均不匹配,则可以确定发送该第一报文消息的第一消息发送端认证未通过。
步骤S304,在发送任意第一报文消息的第一消息发送端认证未通过的情况下,丢弃任意第一报文消息。
在本申请实施例中,在发送上述第一报文消息的第一消息发送端认证未通过的情况下,可以丢弃该第一报文消息。
步骤S305,查询与第一交易关键字具有映射关系的第一主题和第一标识信息。
在本申请实施例中,在发送上述第一报文消息的第一消息发送端认证通过的情况下,可以查询与该第一报文消息中的第一交易关键字具有映射关系的第一主题和第一标识信息,以将该第一报文消息发送或路由至第一消息中间件中的第一主题下。
步骤S306,将任意第一报文消息,发送至第一消息中间件中的第一主题下;其中,第一消息中间件是至少一个消息中间件中与第一标识信息匹配的消息中间件。
需要说明的是,步骤S304与步骤S305至S306为并列的两种实现方式,实际应用时,仅需择一执行。
步骤S305至S306的解释说明可以参见本申请任一实施例中的相关描述,在此不做赘述。
本申请实施例的消息交换方法,交换服务集群只将身份认证通过的消息发送端所发送的报文消息,路由至消息中间件,而将身份认证未通过的消息发送端所发送的报文消息直接丢弃,可以提升业务系统的安全性。
在本申请实施例的一种可能的实现方式中,为了提升第一报文消息推送的成功性,在第一报文消息推送失败的情况下,可以基于重推机制,将第一报文消息重新路由至第一消息中间件中的第一主题下。下面结合图4,对上述过程进行详细说明。
图4为本申请实施例所提供的另一种消息交换方法的流程示意图。
如图4所示,在图2或图3所示实施例的基础上,在将任意的一个第一报文消息,发送至第一消息中间件中的第一主题下之后,该消息交换方法还可以包括以下步骤:
步骤S401,判断第一时刻之后的设定时段内是否接收到第一消息中间件发送的第一反馈信息。
其中,第一反馈信息用于指示接收到任意第一报文消息,第一时刻为该任意第一报文消息的发送时刻。
在本申请实施例中,针对任意的一个第一报文消息,交换服务集群(或交换服务集群中的目标交换服务)可以在发送该第一报文消息后,存储该第一报文消息的发送时刻(本申请中记为第一时刻),并判断第一时刻之后的设定时段内是否接收到第一消息中间件的第一反馈信息,其中,第一反馈信息用于指示第一消息中间件接收到该第一报文消息。
若交换服务集群(或交换服务集群中的目标交换服务)接收到第一消息中间件发送的第一反馈信息,则可以不做任何处理,若交换服务集群(或交换服务集群中的目标交换服务)未接收到第一消息中间件发送的第一反馈信息,则可以执行后续步骤。
步骤S402,若未接收到第一反馈信息,则将任意第一报文消息存储至数据库中。
在本申请实施例中,若交换服务集群(或交换服务集群中的目标交换服务)未接收到第一消息中间件发送的第一反馈信息,则表明上述第一报文消息推送失败,此时,可以将该第一报文消息存储至数据库中。
步骤S403,响应于任意第一报文消息在数据库中的存储时长达到设定时长,将数据库中的任意第一报文消息重新发送至第一消息中间件的第一主题下。
在本申请实施例中,交换服务集群(或交换服务集群中的目标交换服务)可以判断该第一报文消息在数据库中的存储时长是否达到设定时长,若该第一报文消息在数据库中的存储时长达到设定时长,则可以将数据库中的该第一报文消息重新发送至第一消息中间件的第一主题下,而若该第一报文消息在数据库中的存储时长未达到设定时长,则可以继续等待,直到存储时长达到设定时长,再将数据库中的该第一报文消息重新发送至第一消息中间件的第一主题下。
可选地,在第一报文消息重新推送成功的情况下,可以将数据库中的该第一报文消息删除,以降低存储开销。例如,在交换服务集群(或交换服务集群中的目标交换服务)接收到第一消息中间件发送的第二反馈信息时,可以删除数据库中的该第一报文消息,其中,第二反馈信息用于指示第一消息中间件接收到重新发送的该第一报文消息。
可选地,在重新发送该第一报文消息之后的设定时段内仍然未接收到第一消息中间件发送的第二反馈信息时,交换服务集群(或交换服务集群中的目标交换服务)可以等待设定时长后,再次将数据库中的该第一报文消息重新发送至第一消息中间件的第一主题下,直到接收到第一消息中间件发送的反馈消息时,再删除数据库中的该第一报文消息。
本申请实施例的消息交换方法,在第一报文消息推送失败的情况下,可以基于重推机制,将第一报文消息重新路由至第一消息中间件中的第一主题下,可以提升第一报文消息推送的成功性。
在本申请实施例的一种可能的实现方式中,为了提升报文消息交换的成功性,在某个交换服务故障的情况下,可以将报文消息转移到其他可用的交换节点。下面结合图5,对上述过程进行详细说明。
图5为本申请实施例所提供的另一种消息交换方法的流程示意图。
如图5所示,该消息交换方法应用于交换服务集群中的第一交换服务,在图1至图4任一所示实施例的基础上,该消息交换方法还可以包括以下步骤:
步骤S501,接收调度器发送的转移信息;其中,转移信息是调度器在接收到第二消息发送端发送的第二报文消息,根据第二报文消息生成第二调度信息,并发送至第二交换服务后,监测到第二交换服务发生故障的情况下,根据第二报文消息生成并发送至第一交换服务的。
其中,第二消息发送端与第一消息发送端可以为同一发送端,或者也可以为不同发送端,本申请实施例对此并不作限制。
在本申请实施例中,调度器在接收到第二消息发送端发送的第二报文消息后,可以根据交换服务集群中的各个交换服务的负载信息和状态信息,从多个交换服务中确定第二交换服务,其中,第二交换服务的确定方式与目标交换服务的确定方式类似,在此不做赘述。之后,调度器可以根据第二报文消息生成第二调度信息,并将第二调度信息发送至第二交换服务。
在本申请实施例中,调度器还可以对第二交换服务进行实时监测,若监测到第二交换服务发生故障,则调度器可以根据交换服务集群中的各个交换服务的负载信息和状态信息,从多个交换服务中重新选择一个交换服务(例如为第一交换服务),之后,可以根据第二报文消息生成转移信息,并将转移消息发送至第一交换服务。相应的,第一交换服务可以接收调度器发送的转移信息。
步骤S502,从转移信息中获取第二报文消息,并对第二报文消息进行解析,以得到第二交易关键字。
其中,第二交易关键字,用于指示第二报文消息所属的业务。
在本申请实施例中,第一交换服务可以从转移消息中提取第二报文消息,并对第二报文消息进行解析,以得到第二交易关键字。
步骤S503,查询与第二交易关键字具有映射关系的第二主题和第二标识信息。
在本申请实施例中,第一交换服务可以根据第二交易关键字,查询第一映射关系,以得到与该第二交易关键字具有映射关系的第二主题和第二标识信息。
步骤S504,将第二报文消息,路由至第二消息中间件中的第二主题下;其中,第二消息中间件是至少一个消息中间件中与第二标识信息匹配的消息中间件。
其中,第二消息中间件与第一消息中间件可以为同一或同类型的消息中间件,或者,第二消息中间件与第一消息中间件可以为不同或不同类型的消息中间件,比如,第一消息中间件可以为Kafka,第二消息中间件可以为RocketMQ、ZeroMQ等。也就是说,交换服务集群可以支持或对接多种类型的消息中间件,提供一对多的消息订阅以及通知功能。
在本申请实施例中,第一交换服务可以将第二报文消息,路由至第二消息中间件中的第二主题下。
本申请实施例的消息交换方法,在交换服务集群中的某个交换服务故障的情况下,可以将报文消息转移到其他可用的交换节点,以提升报文消息交换的成功性。
在本申请的任意一个实施例之中,通过消息集群(包括至少一个消息中间件)收发消息,可以实现系统(如消息发送端所处的上游系统与消息接收端所处的下游系统)之间异步解耦,而交换服务是传输系统之间异步传输的桥梁,通过交换服务来实现消息交换的系统架构可以如图6所示。
作为一种示例,以消息发送端通过HTTP协议,向交换服务集群中的交换服务发送报文消息进行示例,通过交换服务来实现消息交换的流程主要可以包括以下步骤:
1、交换服务集群中的各个交换服务在使用前,可以配置交易关键字、消息中间件的标识信息与主题之间的映射关系。
2、上游系统(消息发送端应用)对接HTTP请求接口,并发送报文消息。
3、交换服务集群中的某个交换服务在接收到报文消息(需要说明的是,同一交换服务可以同时接收多个应用发送的报文消息)后,可以对报文消息进行解析,得到交易关键字。一般情况下,交易关键字可以使用报文消息中具有业务唯一特性的字段,例如系统编号等。
4、交换服务根据交易关键字,查询与该交易关键字具有映射关系的标识信息和主题,并将报文消息发送至与该标识信息对应的消息中间件的主题下。例如,以交易关键字为报文消息中的系统编号进行示例,可以在初始化配置中,映射一个系统编号对应一个消息中间件和一个消息主题。
5、交换服务在消费或拉取到消息中间件的报文消息后,可以解析出报文消息中的交易关键字。
6、交换服务可以根据交易关键字,获取下游系统(消息接收端应用)映射的URL地址信息。
7、交换服务可以根据URL地址信息,将报文消息推送至下游系统,下游系统可以根据接收到的报文消息进行业务处理。
由此,可以基于HTTP方式实现消息交换,解决了代码侵入性高、上下游系统改造困难的问题。
需要说明的是,相关技术中,通常使用MQ进行异步消息传递时,均采用的是SDK集成方式,而本申请中,通过交换服务集群来实现异步消息传递,可以实现传统的项目快速集成对接,解决跨语言使用等问题。并且,在上游系统与下游系统对接交换服务时,无需关注消息主题等技术性参数,只需要给交换服务发送报文消息即可,交换服务在接收到报文消息后,根据报文消息中的相关参数(如交易关键字),将报文消息路由到对应的主题中。
综上,本申请所提供的消息交换方法,至少可以具有以下优点:
1、多协议支持:在消息交换时,可以基于多种网络协议发送报文消息,即,可以提供HTTP、TCP、RPC等多种网络协议,可适配多种开发语言;
2、交换服务集群是可靠的、可扩展的、能够处理海量的报文消息,并且,交换服务集群可以支持多种类型的消息中间件,提供一对多的消息订阅以及通知功能;
3、服务简便:使用交换服务来交换消息,只需要使用简单的API,就能够快速和高效地发送消息和查询消息,使用门槛较低,能够快速融入业务使用;
4、稳定可靠:在报文消息推送失败时,可以设置报文消息推送到DB(DataBase,数据库)进行持久化存储,定时重试,在报文消息推送成功后,可以删除DB中存储的报文消息,以降低存储开销;并且,在交换服务集群中的单个交换服务故障时,可以将报文消息自动迁移到其他可用的交换服务;
5、安全性:可以灵活地设置更细致的统一鉴权,更有效地保护业务系统,提升业务系统的安全性。
与上述图1-图5实施例提供的消息交换方法相对应,本申请还提供一种消息交换装置,由于本申请实施例提供的消息交换装置与上述图1-图5实施例提供的消息交换方法相对应,因此在消息交换方法的实施方式也适用于本申请实施例提供的消息交换装置,在本申请实施例中不再详细描述。
图7为本申请实施例所提供的一种消息交换装置的结构示意图。
如图7所示,该消息交换装置700可以应用于交换服务集群,包括:拉取模块710、解析模块720、确定模块730以及发送模块740。
其中,拉取模块710,用于从第一消息中间件中,拉取至少一个第一报文消息;其中,第一报文消息是交换服务集群在接收到第一消息发送端发送的第一报文消息后路由至第一消息中间件中的。
解析模块720,用于针对任一第一报文消息,对任一第一报文消息进行解析,以得到第一交易关键字;其中,第一交易关键字用于指示任一第一报文消息所属的业务。
确定模块730,用于根据第一交易关键字,确定第一消息接收端的第一地址信息。
发送模块740,用于根据第一地址信息,将任一第一报文消息发送至第一消息接收端。
作为一种可能的实现方式,第一报文消息是交换服务集群通过以下模块路由至第一消息中间件中的:
接收模块,用于接收至少一个第一消息发送端发送的第一报文消息。
解析模块720,还用于:针对任意第一报文消息,对任意第一报文消息进行解析,以得到第一交易关键字。
查询模块,用于查询与第一交易关键字具有映射关系的第一主题和第一标识信息。
发送模块740,还用于:将任意第一报文消息,发送至第一消息中间件中的第一主题下;其中,第一消息中间件是至少一个消息中间件中与第一标识信息匹配的消息中间件。
作为一种可能的实现方式,该消息交换装置700还可以包括:
配置模块,用于接收配置指令,并响应于配置指令,配置交易关键字、主题与消息中间件的标识信息之间的第一映射关系;
第一存储模块,用于存储第一映射关系。
作为一种可能的实现方式,任意第一报文消息中携带身份认证信息,解析模块720,具体用于:根据身份认证信息,对发送任意第一报文消息的第一消息发送端进行身份认证;在发送任意第一报文消息的第一消息发送端认证通过的情况下,对任意第一报文消息进行解析,以得到交易关键字。
该消息交换装置700还可以包括:
丢弃模块,用于在发送任意第一报文消息的第一消息发送端认证未通过的情况下,丢弃任意第一报文消息。
作为一种可能的实现方式,该消息交换装置700还可以包括:
判断模块,用于判断第一时刻之后的设定时段内是否接收到第一消息中间件发送的第一反馈信息;其中,第一反馈信息用于指示接收到任意第一报文消息,第一时刻为任意第一报文消息的发送时刻。
第二存储模块,用于若未接收到第一反馈信息,则将任意第一报文消息存储至数据库中;
发送模块740,还用于:响应于任意第一报文消息在数据库中的存储时长达到设定时长,将数据库中的任意第一报文消息重新发送至第一消息中间件的第一主题下。
删除模块,用于若接收到第一消息中间件发送的第二反馈信息,则删除数据库中的任意第一报文消息,其中,第二反馈信息用于指示接收到重新发送的任意第一报文消息。
作为一种可能的实现方式,第一报文消息是交换服务集群中的目标交换服务路由至第一消息中间件中的,第一消息发送端设置有交换服务集群中的至少一个交换服务的地址信息,第一报文消息是第一消息发送端从至少一个交换服务中选择目标交换服务,并根据目标交换服务的第二地址信息,将第一报文消息发送至目标交换服务的。
作为一种可能的实现方式,第一报文消息是交换服务集群中的目标交换服务路由至第一消息中间件中的,交换服务集群中还包括调度器,接收模块,具体用于:接收调度器发送的调度信息;其中,调度信息是调度器在接收到任一第一消息发送端发送的第一报文消息后,根据交换服务集群中的各个交换服务的负载信息和状态信息,从各个交换服务中确定目标交换服务,根据任一第一消息发送端发送的第一报文消息生成并发送至目标交换服务的;从调度信息中获取第一报文消息。
作为一种可能的实现方式,目标交换服务是通过以下模块确定的:
处理模块,用于针对任一交换服务,根据所述任一交换服务的状态信息,确定任一交换服务的第一权重;其中,状态信息包括可用状态和不可用状态,可用状态对应的第一权重高于不可用状态对应的第一权重;根据任一交换服务的负载信息,确定任一交换服务的第二权重;其中,第二权重与负载信息呈负相关关系;根据第一权重和第二权重,确定任一交换服务的目标权重;根据各个交换服务的目标权重,从各个交换服务中确定目标交换服务。
作为一种可能的实现方式,处理模块,具体用于:获取任一交换服务的硬件性能指标和响应时延;根据硬件性能指标和响应时延,确定任一交换服务的第三权重,其中,第三权重与响应时延呈负相关关系,第三权重与硬件性能指标呈正相关关系;根据第一权重、第二权重和第三权重,确定任一交换服务的目标权重。
作为一种可能的实现方式,该消息交换装置700应用于交换服务集群中的第一交换服务,交换服务集群中还包括调度器,接收模块,还用于:接收调度器发送的转移信息;其中,转移信息是调度器在接收到第二消息发送端发送的第二报文消息,根据第二报文消息生成第二调度信息,并发送至第二交换服务后,监测到第二交换服务发生故障的情况下,根据第二报文消息生成并发送至第一交换服务的。
该消息交换装置700还可以包括:
获取模块,用于从转移信息中获取第二报文消息。
解析模块720,还用于:对第二报文消息进行解析,以得到第二交易关键字。
查询模块,还用于:查询与第二交易关键字具有映射关系的第二主题和第二标识信息。
路由模块,用于将第二报文消息,路由至第二消息中间件中的第二主题下;其中,第二消息中间件是至少一个消息中间件中与第二标识信息匹配的消息中间件。
作为一种可能的实现方式,确定模块730,具体用于:根据第一交易关键字,查询第二映射关系,以得到第一地址信息;其中,第二映射关系用于指示交易关键字与消息接收端的地址信息之间的对应关系。
本申请实施例的消息交换装置,通过交换服务集群从第一消息中间件中拉取至少一个第一报文消息;其中,第一报文消息是交换服务集群在接收到第一消息发送端发送的第一报文消息后路由至第一消息中间件中的;针对任一第一报文消息,对任一第一报文消息进行解析,以得到第一交易关键字;其中,第一交易关键字用于指示任一第一报文消息所属的业务;根据第一交易关键字,确定第一消息接收端的第一地址信息;根据第一地址信息,将任一第一报文消息发送至第一消息接收端。由此,可以通过交换服务集群来实现消息发送端和消息接收端之间的消息交换,在报文消息传输时,可以基于网络协议(如HTTP、TCP、RPC等)传输,而无需在消息发送端和消息接收端之间集成SDK,可以降低对应用系统的代码的侵入性。并且,消息发送端和消息接收端之间无需关注消息主题等技术性参数,消息发送端只需向交换服务集群发送报文消息即可,由交换服务集群根据报文消息中的交易关键字,将报文消息路由到对应的主题中,可以降低消息发送端和消息接收端侧的代码复杂程度和使用难度。
为了实现上述实施例,本申请还提出一种电子设备,其中,电子设备可以为任一具有计算能力的设备,该电子设备包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时,实现如本申请前述任一实施例提出的消息交换方法。
作为一种示例,图8是本申请一示例性实施例所示出的电子设备800的结构示意图,如图8所示,上述电子设备800,还可以包括:
存储器810及处理器820,连接不同组件(包括存储器810和处理器820)的总线830,存储器810存储有计算机程序,当处理器820执行所述程序时实现本申请实施例所述的消息交换方法。
总线830表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
电子设备800典型地包括多种电子设备可读介质。这些介质可以是任何能够被电子设备800访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器810还可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)840和/或高速缓存存储器850。服务器800可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统860可以用于读写不可移动的、非易失性磁介质(图8未显示,通常称为“硬盘驱动器”)。尽管图8中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线830相连。存储器810可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本申请各实施例的功能。
具有一组(至少一个)程序模块870的程序/实用工具880,可以存储在例如存储器810中,这样的程序模块870包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块870通常执行本申请所描述的实施例中的功能和/或方法。
电子设备800也可以与一个或多个外部设备890(例如键盘、指向设备、显示器891等)通信,还可与一个或者多个使得用户能与该电子设备800交互的设备通信,和/或与使得该电子设备800能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口892进行。并且,电子设备800还可以通过网络适配器893与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器893通过总线830与电子设备800的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备800使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理器820通过运行存储在存储器810中的程序,从而执行各种功能应用以及数据处理。
需要说明的是,本实施例的电子设备的实施过程和技术原理参见前述对本申请实施例的消息交换方法的解释说明,此处不再赘述。
为了实现上述实施例,本申请还提出一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请前述任一实施例提出的消息交换方法。
为了实现上述实施例,本申请还提出一种计算机程序产品,当所述计算机程序产品中的指令由处理器执行时,执行如本申请前述任一实施例提出的消息交换方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (10)
1.一种消息交换方法,其特征在于,应用于交换服务集群,包括:
从第一消息中间件中,拉取至少一个第一报文消息;其中,所述第一报文消息是所述交换服务集群在接收到第一消息发送端发送的所述第一报文消息后路由至所述第一消息中间件中的;
针对任一第一报文消息,对所述任一第一报文消息进行解析,以得到第一交易关键字;其中,所述第一交易关键字用于指示所述任一第一报文消息所属的业务;
根据所述第一交易关键字,确定第一消息接收端的第一地址信息;
根据所述第一地址信息,将所述任一第一报文消息发送至所述第一消息接收端。
2.根据权利要求1所述的方法,其特征在于,所述第一报文消息是所述交换服务集群通过以下步骤路由至所述第一消息中间件中的:
接收至少一个第一消息发送端发送的第一报文消息;
针对任意第一报文消息,对所述任意第一报文消息进行解析,以得到第一交易关键字;
查询与所述第一交易关键字具有映射关系的第一主题和第一标识信息;
将所述任意第一报文消息,发送至所述第一消息中间件中的第一主题下;其中,所述第一消息中间件是至少一个消息中间件中与所述第一标识信息匹配的消息中间件。
3.根据权利要求2所述的方法,其特征在于,所述任意第一报文消息中携带身份认证信息,
所述针对任意第一报文消息,对所述任意第一报文消息进行解析,以得到交易关键字,包括:
根据所述身份认证信息,对发送所述任意第一报文消息的第一消息发送端进行身份认证;
在发送所述任意第一报文消息的第一消息发送端认证通过的情况下,对所述任意第一报文消息进行解析,以得到交易关键字;
相应的,所述根据所述身份认证信息,对发送所述任意第一报文消息的第一消息发送端进行鉴权之后,所述方法还包括:
在发送所述任意第一报文消息的第一消息发送端认证未通过的情况下,丢弃所述任意第一报文消息。
4.根据权利要求2所述的方法,其特征在于,所述将所述任意第一报文消息,发送至所述第一消息中间件中的第一主题下之后,所述方法还包括:
判断第一时刻之后的设定时段内是否接收到所述第一消息中间件发送的第一反馈信息;其中,所述第一反馈信息用于指示接收到所述任意第一报文消息,所述第一时刻为所述任意第一报文消息的发送时刻;
若未接收到所述第一反馈信息,则将所述任意第一报文消息存储至数据库中;
响应于所述任意第一报文消息在所述数据库中的存储时长达到设定时长,将所述数据库中的所述任意第一报文消息重新发送至所述第一消息中间件的第一主题下;
若接收到所述第一消息中间件发送的第二反馈信息,则删除所述数据库中的所述任意第一报文消息,其中,所述第二反馈信息用于指示接收到重新发送的所述任意第一报文消息。
5.根据权利要求2所述的方法,其特征在于,所述第一报文消息是所述交换服务集群中的目标交换服务路由至所述第一消息中间件中的,
所述第一消息发送端设置有所述交换服务集群中的至少一个交换服务的地址信息,所述第一报文消息是所述第一消息发送端从所述至少一个交换服务中选择目标交换服务,并根据所述目标交换服务的第二地址信息,将所述第一报文消息发送至所述目标交换服务的。
6.根据权利要求2所述的方法,其特征在于,所述第一报文消息是所述交换服务集群中的目标交换服务路由至所述第一消息中间件中的,所述交换服务集群中还包括调度器,
所述接收至少一个消息发送端发送的第一报文消息,包括:
接收所述调度器发送的调度信息;其中,所述调度信息是所述调度器在接收到任一第一消息发送端发送的第一报文消息后,根据所述交换服务集群中的各个交换服务的负载信息和状态信息,从各个所述交换服务中确定目标交换服务,根据所述任一第一消息发送端发送的第一报文消息生成并发送至目标交换服务的;
从所述调度信息中获取第一报文消息。
7.根据权利要求6所述的方法,其特征在于,所述根据所述交换服务集群中的各个交换服务的负载信息和状态信息,从各个所述交换服务中确定目标交换服务,包括:
针对任一交换服务,根据所述任一交换服务的状态信息,确定所述任一交换服务的第一权重;其中,所述状态信息包括可用状态和不可用状态,可用状态对应的第一权重高于不可用状态对应的第一权重;
根据所述任一交换服务的负载信息,确定所述任一交换服务的第二权重;其中,所述第二权重与所述负载信息呈负相关关系;
根据所述第一权重和所述第二权重,确定所述任一交换服务的目标权重;
根据各个所述交换服务的目标权重,从各个所述交换服务中确定目标交换服务。
8.根据权利要求7所述的方法,其特征在于,所述根据所述第一权重和所述第二权重,确定所述任一交换服务的目标权重,包括:
获取所述任一交换服务的硬件性能指标和响应时延;
根据所述硬件性能指标和所述响应时延,确定所述任一交换服务的第三权重,其中,所述第三权重与所述响应时延呈负相关关系,所述第三权重与所述硬件性能指标呈正相关关系;
根据所述第一权重、所述第二权重和所述第三权重,确定所述任一交换服务的目标权重。
9.根据权利要求1-8中任一项所述的方法,其特征在于,所述方法应用于所述交换服务集群中的第一交换服务,所述交换服务集群中还包括调度器,所述方法还包括:
接收所述调度器发送的转移信息;其中,所述转移信息是所述调度器在接收到第二消息发送端发送的第二报文消息,根据所述第二报文消息生成第二调度信息,并发送至第二交换服务后,监测到所述第二交换服务发生故障的情况下,根据所述第二报文消息生成并发送至所述第一交换服务的;
从所述转移信息中获取所述第二报文消息,并对所述第二报文消息进行解析,以得到第二交易关键字;
查询与所述第二交易关键字具有映射关系的第二主题和第二标识信息;
将所述第二报文消息,路由至第二消息中间件中的第二主题下;其中,所述第二消息中间件是至少一个消息中间件中与所述第二标识信息匹配的消息中间件。
10.一种消息交换装置,其特征在于,应用于交换服务集群,包括:
拉取模块,用于从第一消息中间件中,拉取至少一个第一报文消息;其中,所述第一报文消息是所述交换服务集群在接收到第一消息发送端发送的所述第一报文消息后路由至所述第一消息中间件中的;
解析模块,用于针对任一第一报文消息,对所述任一第一报文消息进行解析,以得到第一交易关键字;其中,所述第一交易关键字用于指示所述任一第一报文消息所属的业务;
确定模块,用于根据所述第一交易关键字,确定第一消息接收端的第一地址信息;
发送模块,用于根据所述第一地址信息,将所述任一第一报文消息发送至所述第一消息接收端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311132751.4A CN117061636A (zh) | 2023-09-04 | 2023-09-04 | 消息交换方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311132751.4A CN117061636A (zh) | 2023-09-04 | 2023-09-04 | 消息交换方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117061636A true CN117061636A (zh) | 2023-11-14 |
Family
ID=88653572
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311132751.4A Pending CN117061636A (zh) | 2023-09-04 | 2023-09-04 | 消息交换方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117061636A (zh) |
-
2023
- 2023-09-04 CN CN202311132751.4A patent/CN117061636A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8856635B2 (en) | Loader and provider configuration for remotely provided services | |
US7793140B2 (en) | Method and system for handling failover in a distributed environment that uses session affinity | |
CN101622587B (zh) | 用于唤醒计算设备的集中式服务 | |
CN108449239B (zh) | 心跳包检测方法、装置、设备和存储介质 | |
AU2014215935B2 (en) | A system and method for managing message queues in a peer-to-peer communication network | |
US20080177872A1 (en) | Managing aggregation and sending of communications | |
CN109951546B (zh) | 基于智能合约的事务请求处理方法、装置、设备和介质 | |
CN113067882A (zh) | 一种消息处理方法、装置、电子设备及介质 | |
CN111414208A (zh) | 应用程序的启动方法、装置及设备 | |
US10027563B2 (en) | Using status inquiry and status response messages to exchange management information | |
KR20110050590A (ko) | 컴퓨터 네트워크에서 이용자 디바이스들 사이의 리소스 공유를 위한 방법 및 장치 | |
JP4519855B2 (ja) | トランスポートにとらわれないプルモードメッセージングサービス | |
CN111988391A (zh) | 一种消息发送方法及装置 | |
US8200845B2 (en) | Queuing of invocations for mobile web services | |
CN117061636A (zh) | 消息交换方法和装置 | |
CN108259576B (zh) | 一种软硬件实时信息传输系统和方法 | |
CN115499501A (zh) | 消息推送方法、系统、服务网关及存储介质 | |
JP2000029797A (ja) | 電子メールシステム | |
EP1956798A2 (en) | Integrating Eventing in a Web Service Application of a Multi-Functional Peripheral | |
US8640143B2 (en) | Method and system for providing preemptive response routing | |
CN110971535A (zh) | 一种通信拥塞控制方法及装置、设备和存储介质 | |
CN117811833B (zh) | 一种基于发布订阅模式的网络密码机统一管理系统及方法 | |
CN116055565B (zh) | 一种数据传输方法、系统、装置、电子设备及存储介质 | |
CN115150031B (zh) | 基于分布式消息的分布式系统消息响应方法及装置 | |
CN115378831B (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 |