CN106375447A - 基于消息中间件的服务切换方法及装置 - Google Patents
基于消息中间件的服务切换方法及装置 Download PDFInfo
- Publication number
- CN106375447A CN106375447A CN201610802246.XA CN201610802246A CN106375447A CN 106375447 A CN106375447 A CN 106375447A CN 201610802246 A CN201610802246 A CN 201610802246A CN 106375447 A CN106375447 A CN 106375447A
- Authority
- CN
- China
- Prior art keywords
- message
- receiving
- transmitting terminal
- queue
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/148—Migration or transfer of sessions
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明公开了一种基于消息中间件的服务切换方法,所述服务切换方法包括:在第一接收端异常的情况下,关闭第一发送端在消息中间件的第一消息队列出入口,并开启第二发送端在所述消息中间件的第二消息队列出入口;在接收到所述第一发送端发送的请求消息时,将接收到的所述请求消息路由到所述第二消息队列中,以供第二接收端基于所述第二消息队列中的请求消息反馈对应的响应消息;在接收到所述第二接收端反馈的响应消息时,将所述响应消息路由到第一发送端中。本发明还公开了一种基于消息中间件的服务切换装置。本发明消除了接收端和发送端之间的耦合关系。
Description
技术领域
本发明涉及服务治理领域,尤其涉及一种基于消息中间件的服务切换方法及装置。
背景技术
传统的分布式服务调用中,大多采用RPC(Remote Procedure Call Protocol,远程过程调用协议)的调用方式,这样当接收端(服务端)服务切换的时候,由于没有解耦,所有的发送端(客户端)都会出现异常,影响面很大,容易导致业务中断的问题。
发明内容
本发明的主要目的在于提出一种基于消息中间件的服务切换方法及装置,旨在实现分布式系统中服务端与客户端之间的服务切换。
为实现上述目的,本发明提供的一种基于消息中间件的服务切换方法,所述服务切换方法包括:
在第一接收端异常的情况下,关闭第一发送端在消息中间件的第一消息队列出入口,并开启第二发送端在所述消息中间件的第二消息队列出入口;
在接收到所述第一发送端发送的请求消息时,将接收到的所述请求消息路由到所述第二消息队列中,以供第二接收端基于所述第二消息队列中的请求消息反馈对应的响应消息;
在接收到所述第二接收端反馈的响应消息时,将所述响应消息路由到第一发送端中。
优选地,所述在第一接收端异常的情况下,关闭第一发送端在消息中间件的第一消息队列出入口,并开启第二发送端在所述消息中间件的第二消息队列出入口的步骤之后,所述服务切换方法还包括:
在所述第二消息队列中,接收所述第二发送端发送的请求消息;
接收所述第二接收端基于所述第二消息队列中的请求消息反馈的响应消息,并将接收到的所述响应消息发送至所述第二发送端。
优选地,所述在第一接收端异常的情况下,关闭第一发送端在消息中间件的第一消息队列出入口,并开启第二发送端在所述消息中间件的第二消息队列出入口的步骤之前,所述服务切换方法还包括:
确定当前的服务部署类型;
根据确定的服务部署类型,执行相应的监听操作;
其中,在服务部署为单活服务部署时,监听所述第一消息队列,不监听所述第二消息队列;在服务部署为双活服务部署时,监听所述第一消息队列以及所述第二消息队列。
优选地,所述根据确定的服务部署类型,执行相应的监听操作的步骤之后,所述服务切换方法还包括:
在第一接收端正常的情况下,且当前的服务部署类型为单活服务部署时,若在所述消息中间件的第一消息队列中接收第一发送端发送的请求消息,则接收第一接收端基于所述第一消息队列中的所述请求消息反馈的响应消息,并将接收到的所述响应消息发送至所述第一发送端;
若接收到第二发送端发送的请求消息,则将接收到的所述请求消息路由到第一消息队列中,以供第一接收端基于所述第一消息队列中的所述请求消息反馈对应的响应消息,在接收到所述第一接收端反馈的响应消息时,将所述响应消息路由到第二发送端中。
优选地,所述根据确定的服务部署类型,执行相应的监听操作的步骤之后,所述服务切换方法还包括:
在第一接收端正常的情况下,且当前的服务部署类型为双活服务部署时,若在所述消息中间件的第一消息队列中接收第一发送端发送的请求消息,则接收第一接收端基于所述第一消息队列中的所述请求消息反馈的响应消息,并将接收到的所述响应消息发送至所述第一发送端;
若在所述消息中间件的第二消息队列中接收第二发送端发送的请求消息,则接收第二接收端基于所述第二消息队列中的所述请求消息反馈的响应消息,并将接收到的所述响应消息发送至所述第二发送端。
此外,为实现上述目的,本发明还提出一种基于消息中间件的服务切换装置,所述服务切换装置包括:
处理模块,用于在第一接收端异常的情况下,关闭第一发送端在消息中间件的第一消息队列出入口,并开启第二发送端在所述消息中间件的第二消息队列出入口;
路由模块,用于在接收到所述第一发送端发送的请求消息时,将接收到的所述请求消息路由到所述第二消息队列中,以供第二接收端基于所述第二消息队列中的请求消息反馈对应的响应消息;
所述路由模块,还用于在接收到所述第二接收端反馈的响应消息时,将所述响应消息路由到第一发送端中。
优选地,所述服务切换装置还包括:
接收模块,用于在所述第二消息队列中,接收所述第二发送端发送的请求消息;
所述接收模块,还用于接收所述第二接收端基于所述第二消息队列中的请求消息反馈的响应消息;
发送模块,用于将接收到的所述响应消息发送至所述第二发送端。
优选地,所述服务切换装置还包括:
确定模块,用于确定当前的服务部署类型;
执行模块,用于根据确定的服务部署类型,执行相应的监听操作;
其中,在服务部署为单活服务部署时,监听所述第一消息队列,不监听所述第二消息队列;在服务部署为双活服务部署时,监听所述第一消息队列以及所述第二消息队列。
优选地,在第一接收端正常的情况下,且当前的服务部署类型为单活服务部署时,
所述处理模块,还用于若在所述消息中间件的第一消息队列中接收第一发送端发送的请求消息,则接收第一接收端基于所述第一消息队列中的所述请求消息反馈的响应消息,并将接收到的所述响应消息发送至所述第一发送端;
所述处理模块,还用于若接收到第二发送端发送的请求消息,则将接收到的所述请求消息路由到第一消息队列中,以供第一接收端基于所述第一消息队列中的所述请求消息反馈对应的响应消息,在接收到所述第一接收端反馈的响应消息时,将所述响应消息路由到第二发送端中。
优选地,在第一接收端正常的情况下,且当前的服务部署类型为双活服务部署时,
所述处理模块,还用于若在所述消息中间件的第一消息队列中接收第一发送端发送的请求消息,则接收第一接收端基于所述第一消息队列中的所述请求消息反馈的响应消息,并将接收到的所述响应消息发送至所述第一发送端;
所述处理模块,还用于若在所述消息中间件的第二消息队列中接收第二发送端发送的请求消息,则接收第二接收端基于所述第二消息队列中的所述请求消息反馈的响应消息,并将接收到的所述响应消息发送至所述第二发送端。
本发明提出的基于消息中间件的服务切换方法及装置,在第一接收端异常的情况下,关闭第一发送端在消息中间件的第一消息队列出入口,并开启第二发送端在所述消息中间件的第二消息队列出入口,此时,若接收到所述第一发送端发送的请求消息时,即可将接收到的所述请求消息路由到所述第二消息队列中,以供第二接收端基于所述第二消息队列中的请求消息反馈对应的响应消息,在接收到所述第二接收端反馈的响应消息时,直接将所述响应消息路由到第一发送端中,实现了第一接收端异常的时候,第一发送端同样可以正常发送消息,而不会由于第一接收端异常导致第一发送端发送消息失败,本方案消除了接收端和发送端之间的耦合关系,服务切换正常执行,即使一端发生异常,也不会对另一端造成影响。
附图说明
图1为本发明基于消息中间件的服务切换方法较佳实施例的流程示意图;
图2为本发明基于消息中间件的服务切换装置较佳实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种基于消息中间件的服务切换方法。
参照图1,图1为本发明基于消息中间件的服务切换方法第一实施例的流程示意图。
在本实施例中,所述服务切换方法包括:
步骤S10,在第一接收端异常的情况下,关闭第一发送端在消息中间件的第一消息队列出入口,并开启第二发送端在所述消息中间件的第二消息队列出入口;
步骤S20,在接收到所述第一发送端发送的请求消息时,将接收到的所述请求消息路由到所述第二消息队列中,以供第二接收端基于所述第二消息队列中的请求消息反馈对应的响应消息;
步骤S30,在接收到所述第二接收端反馈的响应消息时,将所述响应消息路由到第一发送端中。
在本实施例中,所述步骤S10之前,所述服务切换方法还包括:
步骤A,确定当前的服务部署类型;
步骤B,根据确定的服务部署类型,执行相应的监听操作;
其中,在服务部署为单活服务部署时,监听所述第一消息队列,不监听所述第二消息队列;在服务部署为双活服务部署时,监听所述第一消息队列以及所述第二消息队列。
进一步地,所述步骤B之后,所述服务切换方法还包括:
在第一接收端正常的情况下,且当前的服务部署类型为单活服务部署时,若在所述消息中间件的第一消息队列中接收第一发送端发送的请求消息,则接收第一接收端基于所述第一消息队列中的所述请求消息反馈的响应消息,并将接收到的所述响应消息发送至所述第一发送端;
若接收到第二发送端发送的请求消息,则将接收到的所述请求消息路由到第一消息队列中,以供第一接收端基于所述第一消息队列中的所述请求消息反馈对应的响应消息,在接收到所述第一接收端反馈的响应消息时,将所述响应消息路由到第二发送端中。
进一步地,所述步骤B之后,所述服务切换方法还包括:
在第一接收端正常的情况下,且当前的服务部署类型为双活服务部署时,若在所述消息中间件的第一消息队列中接收第一发送端发送的请求消息,则接收第一接收端基于所述第一消息队列中的所述请求消息反馈的响应消息,并将接收到的所述响应消息发送至所述第一发送端;
若在所述消息中间件的第二消息队列中接收第二发送端发送的请求消息,则接收第二接收端基于所述第二消息队列中的所述请求消息反馈的响应消息,并将接收到的所述响应消息发送至所述第二发送端。
在本实施例中,通过消息中间件对服务进行解耦,下面,将对上文的内容进行详述:
1)在当前的服务部署类型为单活服务部署时,第一接收端正常的情况下,第一接收端部署的服务启动,监听第一发送端的第一消息队列;第二接收端部署的服务不启动,不监听第二发送端的第二消息队列。此时,发生服务调用时:
所述消息中间件在第一消息队列中接收第一发送端发送的请求消息,然后,将所述请求消息转发至所述第一接收端,所述第一接收端在接收到所述请求消息时,消费所述请求消息,并将所述响应消息通过消息中间件反馈给第一发送端,也就是说,所述第一接收端反馈响应消息至所述消息中间件,所述消息中间件接收所述第一接收端基于所述第一消息队列中的所述请求消息反馈的响应消息时,即可将接收到的所述响应消息发送至所述第一发送端,以完成信息的交互。
此时,若所述消息中间件接收到第二发送端发送的请求消息,则将接收到的所述请求消息路由到第一消息队列中,以供第一接收端基于所述第一消息队列中的所述请求消息反馈对应的响应消息,在接收到所述第一接收端反馈的响应消息时,所述消息中间件即可将所述响应消息路由到第二发送端中。
2)在当前的服务部署类型为双活服务部署时,第一接收端正常的情况下,第一接收端部署的服务启动,监听第一发送端的第一消息队列;第二接收端部署的服务启动,监听第二发送端的第二消息队列。此时,发生服务调用时:
所述消息中间件在第一消息队列中接收第一发送端发送的请求消息,并将接收到的所述响应消息转发至所述第一接收端,所述第一接收端在接收到所述请求消息时,消费所述请求消息,并将所述响应消息通过消息中间件反馈给所述第一发送端,也就是说,所述第一接收端先反馈所述响应消息至所述消息中间件,所述消息中间件再将接收到的所述响应消息发送至所述第一发送端。
此时,若所述消息中间件在第二消息队列中接收第二发送端发送的请求消息,则将接收到的所述请求消息转发至到第二接收端中,以供第二接收端基于所述第二消息队列中的所述请求消息反馈对应的响应消息,在接收到所述第二接收端反馈的响应消息时,所述消息中间件即可将所述响应消息发送至所述第二发送端中。
而在第一接收端异常的情况下,执行步骤S10-步骤S30,具体地:
步骤S10,在第一接收端异常的情况下,关闭第一发送端在消息中间件的第一消息队列出入口,并开启第二发送端在所述消息中间件的第二消息队列出入口;
步骤S20,在接收到所述第一发送端发送的请求消息时,将接收到的所述请求消息路由到所述第二消息队列中,以供第二接收端基于所述第二消息队列中的请求消息反馈对应的响应消息;
步骤S30,在接收到所述第二接收端反馈的响应消息时,将所述响应消息路由到第一发送端中。
进一步地,所述步骤S10之后,所述服务切换方法还包括:
步骤C,在所述第二消息队列中,接收所述第二发送端发送的请求消息;
步骤D,接收所述第二接收端基于所述第二消息队列中的请求消息反馈的响应消息,并将接收到的所述响应消息发送至所述第二发送端。
应当理解的是,消息中间件以消息的形式发送应用程序数据来连接运行于不同系统上的应用程序。本发明采用信息中间件对服务进行解耦,包括上文提到的单活服务部署、双活服务部署、以及单活服务切换和双活服务切换。下文,对单活服务切换和双活服务切换进行详述:
3)在当前的服务部署类型为单活服务部署时,且第一接收端异常的情况下,关闭第一发送端的第一消息队列出入口,并开启第二发送端的第二消息队列出入口,同时,打开第二接收端,相当于开启第二接收端,使其工作,并将消息路由修改到第二发送端的第二消息队列中。从单活服务部署情况可知,原本是第一发送端与第一接收端的工作状态正常启动,并且消息路由是设置在第一发送端的消息队列中,且第二发送端与第二接收端的工作状态关闭的,由于本实施例中,所述第一接收端异常,因此第一发送端与第一接收端的工作状态关闭,因此将第二发送端与第二接收端的工作状态开启,并将消息路由修改到第二发送端的第二消息队列中。此时,如果发生服务调用:
在所述消息中间件接收到所述第一发送端发送的请求消息时,将接收到的所述请求消息路由到所述第二消息队列中,以供第二接收端基于所述第二消息队列中的请求消息反馈对应的响应消息,即所述第二接收端从所述第一消息队列中消费所述请求消息,并将所述响应消息反馈至所述消息中间件中,在接收到所述第二接收端反馈的响应消息时,所述消息中间件即可将所述响应消息路由到第一发送端中,以反馈回所述第一发送端。
当所述消息中间件在所述第二消息队列中,接收所述第二发送端发送的请求消息时,由于此时第二发送端与第二接收端的工作状态开启,因此所述消息中间件直接将所述第二消息队列中的请求消息转发至所述第二接收端,由所述第二接收端基于所述第二消息队列中的请求消息反馈响应消息,在接收到所述第二接收端反馈的响应消息,即可将接收到的所述响应消息发送至所述第二发送端。
4)在当前的服务部署类型为双活服务部署时,且第一接收端异常的情况下,关闭第一发送端的第一消息队列出入口,并将消息路由修改到第二发送端的第二消息队列中。从双活服务部署情况可知,原本第一发送端的第一消息队列出入口以及第二发送端的第二消息队列出入口都是开启的,此时,由于第一接收端异常,因此将第一发送端的第一消息队列出入口关闭,并将消息路由修改到第二发送端的第二消息队列中。此时,如果发生服务调用:
在所述消息中间件接收到所述第一发送端发送的请求消息时,将接收到的所述请求消息路由到所述第二消息队列中,以供第二接收端基于所述第二消息队列中的请求消息反馈对应的响应消息,在接收到所述第二接收端反馈的响应消息时,将所述响应消息路由到第一发送端中。
此时,若所述消息中间件在所述第二消息队列中,接收所述第二发送端发送的请求消息,则将所述请求消息转发至所述第二接收端,以供第二接收端基于所述第二消息队列中的请求消息反馈对应的响应消息,在接收到所述第二接收端基于所述第二消息队列中的请求消息反馈对应的响应消息,即可将接收到的所述响应消息发送至所述第二发送端。
在本实施例中,不仅适用于单双活服务切换,也适用于异地多活服务切换。
本实施例提出的基于消息中间件的服务切换方法,在第一接收端异常的情况下,关闭第一发送端在消息中间件的第一消息队列出入口,并开启第二发送端在所述消息中间件的第二消息队列出入口,此时,若接收到所述第一发送端发送的请求消息时,即可将接收到的所述请求消息路由到所述第二消息队列中,以供第二接收端基于所述第二消息队列中的请求消息反馈对应的响应消息,在接收到所述第二接收端反馈的响应消息时,直接将所述响应消息路由到第一发送端中,实现了第一接收端异常的时候,第一发送端同样可以正常发送消息,而不会由于第一接收端异常导致第一发送端发送消息失败,本方案消除了接收端和发送端之间的耦合关系,服务切换正常执行,即使一端发生异常,也不会对另一端造成影响。相当于是消息中间件能够将所有请求的压力缓冲下来,在调用方超时时间内把消息路由给切换后的服务,逐渐将压力释放出来,比较平滑的解决了业务中断的问题。
本发明进一步提供一种基于消息中间件的服务切换装置。
参照图2,图2为本发明基于消息中间件的服务切换装置第一实施例的功能模块示意图。
需要强调的是,对本领域的技术人员来说,图2所示功能模块图仅仅是一个较佳实施例的示例图,本领域的技术人员围绕图2所示的服务切换装置的功能模块,可轻易进行新的功能模块的补充;各功能模块的名称是自定义名称,仅用于辅助理解该服务切换装置的各个程序功能块,不用于限定本发明的技术方案,本发明技术方案的核心是,各自定义名称的功能模块所要达成的功能。
在本实施例中,所述服务切换装置包括:
处理模块10,用于在第一接收端异常的情况下,关闭第一发送端在消息中间件的第一消息队列出入口,并开启第二发送端在所述消息中间件的第二消息队列出入口;
路由模块20,用于在接收到所述第一发送端发送的请求消息时,将接收到的所述请求消息路由到所述第二消息队列中,以供第二接收端基于所述第二消息队列中的请求消息反馈对应的响应消息;
所述路由模块20,还用于在接收到所述第二接收端反馈的响应消息时,将所述响应消息路由到第一发送端中。
在本实施例中,在上述服务切换的基础上,需要先确定当前的服务部署,并根据确定的服务部署执行相应的操作,具体由预设模块实现,所述预设模块包括确定模块和执行模块,其中,
所述确定模块,用于确定当前的服务部署类型;
所述执行模块,用于根据确定的服务部署类型,执行相应的监听操作;
其中,在服务部署为单活服务部署时,监听所述第一消息队列,不监听所述第二消息队列;在服务部署为双活服务部署时,监听所述第一消息队列以及所述第二消息队列。
进一步地,在本实施例中,在第一接收端正常的情况下,且当前的服务部署类型为单活服务部署时,
所述处理模块10,还用于若在所述消息中间件的第一消息队列中接收第一发送端发送的请求消息,则接收第一接收端基于所述第一消息队列中的所述请求消息反馈的响应消息,并将接收到的所述响应消息发送至所述第一发送端;
所述处理模块10,还用于若接收到第二发送端发送的请求消息,则将接收到的所述请求消息路由到第一消息队列中,以供第一接收端基于所述第一消息队列中的所述请求消息反馈对应的响应消息,在接收到所述第一接收端反馈的响应消息时,将所述响应消息路由到第二发送端中。
进一步地,在第一接收端正常的情况下,且当前的服务部署类型为双活服务部署时,
所述处理模块10,还用于若在所述消息中间件的第一消息队列中接收第一发送端发送的请求消息,则接收第一接收端基于所述第一消息队列中的所述请求消息反馈的响应消息,并将接收到的所述响应消息发送至所述第一发送端;
所述处理模块10,还用于若在所述消息中间件的第二消息队列中接收第二发送端发送的请求消息,则接收第二接收端基于所述第二消息队列中的所述请求消息反馈的响应消息,并将接收到的所述响应消息发送至所述第二发送端。
在本实施例中,通过消息中间件对服务进行解耦,下面,将对上文的内容进行详述:
1)在当前的服务部署类型为单活服务部署时,第一接收端正常的情况下,第一接收端部署的服务启动,监听第一发送端的第一消息队列;第二接收端部署的服务不启动,不监听第二发送端的第二消息队列。此时,发生服务调用时:
所述消息中间件在第一消息队列中接收第一发送端发送的请求消息,然后,将所述请求消息转发至所述第一接收端,所述第一接收端在接收到所述请求消息时,消费所述请求消息,并将所述响应消息通过消息中间件反馈给第一发送端,也就是说,所述第一接收端反馈响应消息至所述消息中间件,所述消息中间件接收所述第一接收端基于所述第一消息队列中的所述请求消息反馈的响应消息时,即可将接收到的所述响应消息发送至所述第一发送端,以完成信息的交互。
此时,若所述消息中间件接收到第二发送端发送的请求消息,则将接收到的所述请求消息路由到第一消息队列中,以供第一接收端基于所述第一消息队列中的所述请求消息反馈对应的响应消息,在接收到所述第一接收端反馈的响应消息时,所述消息中间件即可将所述响应消息路由到第二发送端中。
2)在当前的服务部署类型为双活服务部署时,第一接收端正常的情况下,第一接收端部署的服务启动,监听第一发送端的第一消息队列;第二接收端部署的服务启动,监听第二发送端的第二消息队列。此时,发生服务调用时:
所述消息中间件在第一消息队列中接收第一发送端发送的请求消息,并将接收到的所述响应消息转发至所述第一接收端,所述第一接收端在接收到所述请求消息时,消费所述请求消息,并将所述响应消息通过消息中间件反馈给所述第一发送端,也就是说,所述第一接收端先反馈所述响应消息至所述消息中间件,所述消息中间件再将接收到的所述响应消息发送至所述第一发送端。
此时,若所述消息中间件在第二消息队列中接收第二发送端发送的请求消息,则将接收到的所述请求消息转发至到第二接收端中,以供第二接收端基于所述第二消息队列中的所述请求消息反馈对应的响应消息,在接收到所述第二接收端反馈的响应消息时,所述消息中间件即可将所述响应消息发送至所述第二发送端中。
而在第一接收端异常的情况下,具体地:
所述处理模块10,用于在第一接收端异常的情况下,关闭第一发送端的第一消息队列出入口,并开启第二发送端的第二消息队列出入口;
所述路由模块20,用于在接收到所述第一发送端发送的请求消息时,将接收到的所述请求消息路由到所述第二消息队列中,以供第二接收端基于所述第二消息队列中的请求消息反馈对应的响应消息;
所述路由模块20,还用于在接收到所述第二接收端反馈的响应消息时,将所述响应消息路由到第一发送端中。
进一步地,所述服务切换装置还包括:
接收模块30,用于在所述第二消息队列中,接收所述第二发送端发送的请求消息;
所述接收模块30,还用于接收所述第二接收端基于所述第二消息队列中的请求消息反馈的响应消息;
发送模块40,用于将接收到的所述响应消息发送至所述第二发送端。
应当理解的是,以消息的形式收发应用程序数据来连接运行于不同系统上的应用程序。本发明采用信息中间件对服务进行解耦,包括上文提到的单活服务部署、双活服务部署、以及单活服务切换和双活服务切换。下文,对单活服务切换和双活服务切换进行详述:
3)在当前的服务部署类型为单活服务部署时,且第一接收端异常的情况下,关闭第一发送端的第一消息队列出入口,并开启第二发送端的第二消息队列出入口,同时,打开第二接收端,相当于开启第二接收端,使其工作,并将消息路由修改到第二发送端的第二消息队列中。从单活服务部署情况可知,原本是第一发送端与第一接收端的工作状态正常启动,并且消息路由是设置在第一发送端的消息队列中,且第二发送端与第二接收端的工作状态关闭的,由于本实施例中,所述第一接收端异常,因此第一发送端与第一接收端的工作状态关闭,因此将第二发送端与第二接收端的工作状态开启,并将消息路由修改到第二发送端的第二消息队列中。此时,如果发生服务调用:
在所述消息中间件接收到所述第一发送端发送的请求消息时,将接收到的所述请求消息路由到所述第二消息队列中,以供第二接收端基于所述第二消息队列中的请求消息反馈对应的响应消息,即所述第二接收端从所述第一消息队列中消费所述请求消息,并将所述响应消息反馈至所述消息中间件中,在接收到所述第二接收端反馈的响应消息时,所述消息中间件即可将所述响应消息路由到第一发送端中,以反馈回所述第一发送端。
当所述消息中间件在所述第二消息队列中,接收所述第二发送端发送的请求消息时,由于此时第二发送端与第二接收端的工作状态开启,因此所述消息中间件直接将所述第二消息队列中的请求消息转发至所述第二接收端,由所述第二接收端基于所述第二消息队列中的请求消息反馈响应消息,在接收到所述第二接收端反馈的响应消息,即可将接收到的所述响应消息发送至所述第二发送端。
4)在当前的服务部署类型为双活服务部署时,且第一接收端异常的情况下,关闭第一发送端的第一消息队列出入口,并将消息路由修改到第二发送端的第二消息队列中。从双活服务部署情况可知,原本第一发送端的第一消息队列出入口以及第二发送端的第二消息队列出入口都是开启的,此时,由于第一接收端异常,因此将第一发送端的第一消息队列出入口关闭,并将消息路由修改到第二发送端的第二消息队列中。此时,如果发生服务调用:
在所述消息中间件接收到所述第一发送端发送的请求消息时,将接收到的所述请求消息路由到所述第二消息队列中,以供第二接收端基于所述第二消息队列中的请求消息反馈对应的响应消息,在接收到所述第二接收端反馈的响应消息时,将所述响应消息路由到第一发送端中。
此时,若所述消息中间件在所述第二消息队列中,接收所述第二发送端发送的请求消息,则将所述请求消息转发至所述第二接收端,以供第二接收端基于所述第二消息队列中的请求消息反馈对应的响应消息,在接收到所述第二接收端基于所述第二消息队列中的请求消息反馈对应的响应消息,即可将接收到的所述响应消息发送至所述第二发送端。
在本实施例中,不仅适用于单双活服务切换,也适用于异地多活服务切换。
本实施例提出的基于消息中间件的服务切换装置,在第一接收端异常的情况下,关闭第一发送端在消息中间件的第一消息队列出入口,并开启第二发送端在所述消息中间件的第二消息队列出入口,此时,若接收到所述第一发送端发送的请求消息时,即可将接收到的所述请求消息路由到所述第二消息队列中,以供第二接收端基于所述第二消息队列中的请求消息反馈对应的响应消息,在接收到所述第二接收端反馈的响应消息时,直接将所述响应消息路由到第一发送端中,实现了第一接收端异常的时候,第一发送端同样可以正常发送消息,而不会由于第一接收端异常导致第一发送端发送消息失败,本方案消除了接收端和发送端之间的耦合关系,服务切换正常执行,即使一端发生异常,也不会对另一端造成影响。相当于是消息中间件能够将所有请求的压力缓冲下来,在调用方超时时间内把消息路由给切换后的服务,逐渐将压力释放出来,比较平滑的解决了业务中断的问题。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种基于消息中间件的服务切换方法,其特征在于,所述服务切换方法包括:
在第一接收端异常的情况下,关闭第一发送端在消息中间件的第一消息队列出入口,并开启第二发送端在所述消息中间件的第二消息队列出入口;
在接收到所述第一发送端发送的请求消息时,将接收到的所述请求消息路由到所述第二消息队列中,以供第二接收端基于所述第二消息队列中的请求消息反馈对应的响应消息;
在接收到所述第二接收端反馈的响应消息时,将所述响应消息路由到第一发送端中。
2.如权利要求1所述的服务切换方法,其特征在于,所述在第一接收端异常的情况下,关闭第一发送端在消息中间件的第一消息队列出入口,并开启第二发送端在所述消息中间件的第二消息队列出入口的步骤之后,所述服务切换方法还包括:
在所述第二消息队列中,接收所述第二发送端发送的请求消息;
接收所述第二接收端基于所述第二消息队列中的请求消息反馈的响应消息,并将接收到的所述响应消息发送至所述第二发送端。
3.如权利要求1或2所述的服务切换方法,其特征在于,所述在第一接收端异常的情况下,关闭第一发送端在消息中间件的第一消息队列出入口,并开启第二发送端在所述消息中间件的第二消息队列出入口的步骤之前,所述服务切换方法还包括:
确定当前的服务部署类型;
根据确定的服务部署类型,执行相应的监听操作;
其中,在服务部署为单活服务部署时,监听所述第一消息队列,不监听所述第二消息队列;在服务部署为双活服务部署时,监听所述第一消息队列以及所述第二消息队列。
4.如权利要求3所述的服务切换方法,其特征在于,所述根据确定的服务部署类型,执行相应的监听操作的步骤之后,所述服务切换方法还包括:
在第一接收端正常的情况下,且当前的服务部署类型为单活服务部署时,若在所述消息中间件的第一消息队列中接收第一发送端发送的请求消息,则接收第一接收端基于所述第一消息队列中的所述请求消息反馈的响应消息,并将接收到的所述响应消息发送至所述第一发送端;
若接收到第二发送端发送的请求消息,则将接收到的所述请求消息路由到第一消息队列中,以供第一接收端基于所述第一消息队列中的所述请求消息反馈对应的响应消息,在接收到所述第一接收端反馈的响应消息时,将所述响应消息路由到第二发送端中。
5.如权利要求3所述的服务切换方法,其特征在于,所述根据确定的服务部署类型,执行相应的监听操作的步骤之后,所述服务切换方法还包括:
在第一接收端正常的情况下,且当前的服务部署类型为双活服务部署时,若在所述消息中间件的第一消息队列中接收第一发送端发送的请求消息,则接收第一接收端基于所述第一消息队列中的所述请求消息反馈的响应消息,并将接收到的所述响应消息发送至所述第一发送端;
若在所述消息中间件的第二消息队列中接收第二发送端发送的请求消息,则接收第二接收端基于所述第二消息队列中的所述请求消息反馈的响应消息,并将接收到的所述响应消息发送至所述第二发送端。
6.一种基于消息中间件的服务切换装置,其特征在于,所述服务切换装置包括:
处理模块,用于在第一接收端异常的情况下,关闭第一发送端在消息中间件的第一消息队列出入口,并开启第二发送端在所述消息中间件的第二消息队列出入口;
路由模块,用于在接收到所述第一发送端发送的请求消息时,将接收到的所述请求消息路由到所述第二消息队列中,以供第二接收端基于所述第二消息队列中的请求消息反馈对应的响应消息;
所述路由模块,还用于在接收到所述第二接收端反馈的响应消息时,将所述响应消息路由到第一发送端中。
7.如权利要求6所述的服务切换装置,其特征在于,所述服务切换装置还包括:
接收模块,用于在所述第二消息队列中,接收所述第二发送端发送的请求消息;
所述接收模块,还用于接收所述第二接收端基于所述第二消息队列中的请求消息反馈的响应消息;
发送模块,用于将接收到的所述响应消息发送至所述第二发送端。
8.如权利要求6或7所述的服务切换装置,其特征在于,所述服务切换装置还包括:
确定模块,用于确定当前的服务部署类型;
执行模块,用于根据确定的服务部署类型,执行相应的监听操作;
其中,在服务部署为单活服务部署时,监听所述第一消息队列,不监听所述第二消息队列;在服务部署为双活服务部署时,监听所述第一消息队列以及所述第二消息队列。
9.如权利要求8所述的服务切换装置,其特征在于,在第一接收端正常的情况下,且当前的服务部署类型为单活服务部署时,
所述处理模块,还用于若在所述消息中间件的第一消息队列中接收第一发送端发送的请求消息,则接收第一接收端基于所述第一消息队列中的所述请求消息反馈的响应消息,并将接收到的所述响应消息发送至所述第一发送端;
所述处理模块,还用于若接收到第二发送端发送的请求消息,则将接收到的所述请求消息路由到第一消息队列中,以供第一接收端基于所述第一消息队列中的所述请求消息反馈对应的响应消息,在接收到所述第一接收端反馈的响应消息时,将所述响应消息路由到第二发送端中。
10.如权利要求8所述的服务切换装置,其特征在于,在第一接收端正常的情况下,且当前的服务部署类型为双活服务部署时,
所述处理模块,还用于若在所述消息中间件的第一消息队列中接收第一发送端发送的请求消息,则接收第一接收端基于所述第一消息队列中的所述请求消息反馈的响应消息,并将接收到的所述响应消息发送至所述第一发送端;
所述处理模块,还用于若在所述消息中间件的第二消息队列中接收第二发送端发送的请求消息,则接收第二接收端基于所述第二消息队列中的所述请求消息反馈的响应消息,并将接收到的所述响应消息发送至所述第二发送端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610802246.XA CN106375447B (zh) | 2016-09-05 | 2016-09-05 | 基于消息中间件的服务切换方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610802246.XA CN106375447B (zh) | 2016-09-05 | 2016-09-05 | 基于消息中间件的服务切换方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106375447A true CN106375447A (zh) | 2017-02-01 |
CN106375447B CN106375447B (zh) | 2020-02-07 |
Family
ID=57900174
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610802246.XA Active CN106375447B (zh) | 2016-09-05 | 2016-09-05 | 基于消息中间件的服务切换方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106375447B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108075972A (zh) * | 2017-11-17 | 2018-05-25 | 中国银行股份有限公司 | 一种集成层自动路由系统及方法 |
CN110110274A (zh) * | 2019-05-17 | 2019-08-09 | 极智(上海)企业管理咨询有限公司 | 一种浏览器多页面消息处理分发方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103297470A (zh) * | 2012-02-29 | 2013-09-11 | 中国移动通信集团公司 | 永远在线业务的处理方法、应用服务器、用户终端和系统 |
CN103873287A (zh) * | 2012-12-17 | 2014-06-18 | 南车青岛四方机车车辆股份有限公司 | 一种基于企业服务总线消息监控平台的消息补偿方法 |
CN104811459A (zh) * | 2014-01-23 | 2015-07-29 | 阿里巴巴集团控股有限公司 | 用于消息服务的处理方法、装置及系统、消息服务系统 |
-
2016
- 2016-09-05 CN CN201610802246.XA patent/CN106375447B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103297470A (zh) * | 2012-02-29 | 2013-09-11 | 中国移动通信集团公司 | 永远在线业务的处理方法、应用服务器、用户终端和系统 |
CN103873287A (zh) * | 2012-12-17 | 2014-06-18 | 南车青岛四方机车车辆股份有限公司 | 一种基于企业服务总线消息监控平台的消息补偿方法 |
CN104811459A (zh) * | 2014-01-23 | 2015-07-29 | 阿里巴巴集团控股有限公司 | 用于消息服务的处理方法、装置及系统、消息服务系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108075972A (zh) * | 2017-11-17 | 2018-05-25 | 中国银行股份有限公司 | 一种集成层自动路由系统及方法 |
CN108075972B (zh) * | 2017-11-17 | 2020-10-27 | 中国银行股份有限公司 | 一种集成层自动路由系统及方法 |
CN110110274A (zh) * | 2019-05-17 | 2019-08-09 | 极智(上海)企业管理咨询有限公司 | 一种浏览器多页面消息处理分发方法 |
CN110110274B (zh) * | 2019-05-17 | 2021-06-29 | 极智(上海)企业管理咨询有限公司 | 一种浏览器多页面消息处理分发方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106375447B (zh) | 2020-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103517266B (zh) | 移动网络侧激活移动终端的方法和移动网关系统 | |
CN106453136A (zh) | 建立消息队列的方法和装置 | |
CN104202491A (zh) | 客服电话处理方法及装置 | |
US20090254628A1 (en) | Method, System And Apparatus For Instant Messaging | |
JP2000090029A (ja) | 不連続な端末移動性および前記移動性に関連付けられた遠隔ユ―ザ登録を備えた通信ネットワ―クシステム | |
CN103516918A (zh) | 资源故障恢复方法及装置 | |
CN110198335A (zh) | 消息同步方法及装置、电子设备及存储介质 | |
CN102204234B (zh) | 呼叫控制系统、呼叫控制装置、终端装置以及呼叫控制方法 | |
US20080146224A1 (en) | Push-to-Talk Communication System and Push-to-Talk Communication Method | |
CN106375447A (zh) | 基于消息中间件的服务切换方法及装置 | |
US8886604B2 (en) | Customer service contact | |
CN103036885A (zh) | Sip服务器过载保护系统及方法 | |
CN110750780A (zh) | 基于多业务系统的用户角色权限融合方法、装置以及设备 | |
CN101159702A (zh) | 电话用户与pc用户进行语音沟通的方法、系统及设备 | |
CN107659903A (zh) | 用于实现 VoLTE 业务自动开通的方法和系统 | |
CN113821363A (zh) | 一种进程间通讯方法及系统 | |
CN109151231B (zh) | 客服系统、呼入业务的处理方法以及业务的处理方法 | |
CN114500237B (zh) | 一种通信方法和系统 | |
CN115412597A (zh) | 一种实时数据通信方法 | |
CN103179102A (zh) | 一种桌面虚拟化方法、设备及系统 | |
CN110290139A (zh) | 消息传输方法及装置 | |
CN103428381B (zh) | 坐席的重分配方法及装置 | |
CN114710471A (zh) | 基于网络的客服语音通信方法、装置、电子设备及介质 | |
KR20070061139A (ko) | Parla y X 웹서비스를 이용한 멀티미디어 메시지서비스 방법 및 장치 | |
CN100518213C (zh) | 一种实现合法监听业务的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |