一种MQ多实例消息发送方法和装置与流程

文档序号:28608949发布日期:2022-01-22 12:16阅读:83来源:国知局
一种MQ多实例消息发送方法和装置与流程
一种mq多实例消息发送方法和装置
技术领域
1.本发明涉及计算机数据处理技术领域,尤其涉及一种mq多实例消息发送方法和装置。


背景技术:

2.本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
3.mq(ibm message queue)是现有的一款商业消息中间产品,适用于分布式计算环境或异构系统之中。消息队列技术是分布式应用间交换信息的一种技术。消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走。通过消息队列,应用程序可独立地执行
‑‑
它们不需要知道彼此的位置、或在继续执行前不需要等待接收程序接收此消息。
4.在传统的应用架构中mq采用单点部署,如图2现有技术中mq单实例架构图所示,应用系统在发送消息时,需要通过队列进行,队列根据配置的单个队列管理器发送消息到指定的通道,存在故障后不可用的风险。
5.因此,如何提供一种新的方案,其能够解决上述技术问题是本领域亟待解决的技术难题。


技术实现要素:

6.本发明实施例提供一种mq多实例消息发送方法,本发明从应用角度对多个mq实例进行统一管理,给出了一个mq多实例的高可用解决方案,应用实现了多mq队列管理器的配置和消息发送,该方法包括:
7.配置多个mq队列管理器加入mq队列管理器组;
8.在应用系统发来消息时,通过mq队列管理器组选取mq队列管理器,确定可用mq队列管理器列表并缓存;
9.通过mq队列接收应用系统发来的消息,利用mq队列管理器组从缓存中选取mq队列管理器,将消息通过选取的mq队列管理器发送至对应的通道;
10.监测消息发送结果,在消息发送异常时,根据异常处理机制更换新的mq队列管理器重新发送消息。
11.本发明实施例还提供一种mq多实例消息发送装置,包括:
12.mq队列管理器配置模块,用于配置多个mq队列管理器加入mq队列管理器组;
13.可用mq队列管理器列表确定模块,用于在应用系统发来消息时,通过mq队列管理器组选取mq队列管理器,确定可用mq队列管理器列表并缓存;
14.mq多实例调度模块,用于通过mq队列接收应用系统发来的消息,利用mq队列管理器组从缓存中选取mq队列管理器,将消息通过选取的mq队列管理器发送至对应的通道;
15.异常消息处理重发模块,用于监测消息发送结果,在消息发送异常时,根据异常处理机制更换新的mq队列管理器重新发送消息。
16.本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述一种mq多实例消息发送方法。
17.本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述一种mq多实例消息发送方法的计算机程序。
18.本发明实施例提供的一种mq多实例消息发送方法和装置,包括:首先配置多个mq队列管理器加入mq队列管理器组;然后在应用系统发来消息时,通过mq队列管理器组选取mq队列管理器,确定可用mq队列管理器列表并缓存;下一步通过mq队列接收应用系统发来的消息,利用mq队列管理器组从缓存中选取mq队列管理器,将消息通过选取的mq队列管理器发送至对应的通道;最后监测消息发送结果,在消息发送异常时,根据异常处理机制更换新的mq队列管理器重新发送消息。本发明从应用角度对多个mq实例进行统一管理,给出了一个mq多实例的高可用解决方案,应用实现了多mq队列管理器的配置和消息发送。通过加入mq队列管理器组,对多个mq队列管理器进行调度管理,并在异常情况下引入了异常处理机制;实现了针对多个mq实例的高可用机制,并针对消息发送过程中的异常设计了;异常处理机制;满足了生产环境中对mq高可用的硬性要求,对开发的侵入性相对较低,开发只要配置mq队列管理组即可,通过底层框架的方式予以实现,应用的改造成本低。
附图说明
19.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
20.图1为本发明实施例一种mq多实例消息发送方法示意图。
21.图2为现有技术中mq单实例架构图。
22.图3为本发明实施例一种mq多实例消息发送方法的mq多实例架构图。
23.图4为本发明实施例一种mq多实例消息发送方法的队列管理器组的调度机制流程图。
24.图5为本发明实施例一种mq多实例消息发送方法的异常消息处理重发过程示意图。
25.图6为本发明实施例一种mq多实例消息发送方法的异常轮转机制流程图。
26.图7为运行本发明实施的一种mq多实例消息发送方法的计算机装置示意图。
27.图8为本发明实施例一种mq多实例消息发送装置示意图。
具体实施方式
28.为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
29.本发明涉及大数据技术。图1为本发明实施例一种mq多实例消息发送方法示意图,如图1所示,本发明实施例提供一种mq多实例消息发送方法,本发明从应用角度对多个mq实
例进行统一管理,给出了一个mq多实例的高可用解决方案,应用实现了多mq队列管理器的配置和消息发送,该方法包括:
30.步骤101:配置多个mq队列管理器加入mq队列管理器组;
31.步骤102:在应用系统发来消息时,通过mq队列管理器组选取mq队列管理器,确定可用mq队列管理器列表并缓存;
32.步骤103:通过mq队列接收应用系统发来的消息,利用mq队列管理器组从缓存中选取mq队列管理器,将消息通过选取的mq队列管理器发送至对应的通道;
33.步骤104:监测消息发送结果,在消息发送异常时,根据异常处理机制更换新的mq队列管理器重新发送消息。
34.本发明实施例提供的一种mq多实例消息发送方法,包括:首先配置多个mq队列管理器加入mq队列管理器组;然后在应用系统发来消息时,通过mq队列管理器组选取mq队列管理器,确定可用mq队列管理器列表并缓存;下一步通过mq队列接收应用系统发来的消息,利用mq队列管理器组从缓存中选取mq队列管理器,将消息通过选取的mq队列管理器发送至对应的通道;最后监测消息发送结果,在消息发送异常时,根据异常处理机制更换新的mq队列管理器重新发送消息。本发明从应用角度对多个mq实例进行统一管理,给出了一个mq多实例的高可用解决方案,应用实现了多mq队列管理器的配置和消息发送。通过加入mq队列管理器组,对多个mq队列管理器进行调度管理,并在异常情况下引入了异常处理机制;实现了针对多个mq实例的高可用机制,并针对消息发送过程中的异常设计了;异常处理机制;满足了生产环境中对mq高可用的硬性要求,对开发的侵入性相对较低,开发只要配置mq队列管理组即可,通过底层框架的方式予以实现,应用的改造成本低。
35.在本发明实施例中,涉及的专业词汇如下:
36.消息:在mq中,把应用程序交由mq传输的数据定义为消息,可以定义消息的内容并对消息进行广义的理解,比如:用户的各种类型的数据文件,某个应用向其它应用发出的处理请求等都可以作为消息。消息有两部分组成:消息描述符,描述消息的特征,如:消息的优先级、生命周期、消息id等;消息体,即用户数据部分。在mq中,消息分为两种类型,非永久性消息和永久性消息,非永久性消息是存储在内存中的,它是为了提高性能而设计的,当系统掉电或mq队列管理器重新启动时,将不可恢复。永久性消息是存储在硬盘上,它具有高可靠性,在网络和系统发生故障等情况下都能确保消息不丢、不重。
37.队列:队列是存放消息的容器。
38.队列管理器:队列管理器是mq系统中最上层的一个概念,由它提供基于队列的消息服务。
39.图3为本发明实施例一种mq多实例消息发送方法的mq多实例架构图,如图3所示,应用系统连接mq多实例时需要配置一个队列,队列里需要配置相应的多个队列管理器,队列管理器里配置mq实例的ip地址、端口、通道等信息。应用系统在发送消息时,需要通过队列进行,利用mq队列管理器组管理配置好的多个mq队列管理器,发送消息至指定的通道。具体实施本发明实施例提供的一种mq多实例消息发送方法时,在一个实施例中,可以包括:
40.配置多个mq队列管理器加入mq队列管理器组;
41.在应用系统发来消息时,通过mq队列管理器组选取mq队列管理器,确定可用mq队列管理器列表并缓存;
42.通过mq队列接收应用系统发来的消息,利用mq队列管理器组从缓存中选取mq队列管理器,将消息通过选取的mq队列管理器发送至对应的通道;
43.监测消息发送结果,在消息发送异常时,根据异常处理机制更换新的mq队列管理器重新发送消息。
44.本发明通过应用实现了多队列管理器的配置和消息发送。在采用本发明实施例的方案后,应用系统仍然采用配置的队列发送消息,但在内部配置了多个mq队列管理器,队列可以根据消息的发送状态来判断目前连接的队列管理器是否有效,如处于无效状态,队列将选择另一队列管理器进行消息重发。满足了生产环境中对mq高可用的硬性要求,对开发的侵入性相对较低,开发只要配置mq队列管理组即可,通过底层框架的方式予以实现,应用的改造成本低。
45.具体实施本发明实施例提供的一种mq多实例消息发送方法时,在一个实施例中,配置多个mq队列管理器加入mq队列管理器组,包括:为确保mq多实例的高可用性,对原来的mq队列进行改造,加入了mq队列管理器组,由队列管理器组来管理各队列管理器,通过配置多个mq队列管理器加入mq队列管理器组,首先将多个mq队列管理器配置好,作为后续选取mq队列管理器的基础。
46.具体实施本发明实施例提供的一种mq多实例消息发送方法时,在一个实施例中,在应用系统发来消息时,通过mq队列管理器组选取mq队列管理器,确定可用mq队列管理器列表并缓存,包括:
47.在应用系统发来消息时,触发选取动作,根据发来的消息通过mq队列管理器组选取mq队列管理器,确定可用mq队列管理器列表并缓存;在缓存中,存储着可用mq队列管理器列表;其中,可用mq队列管理器列表中的mq队列管理器可增加或减少,其数量控制通过mq队列管理器组实现。
48.图4为本发明实施例一种mq多实例消息发送方法的队列管理器组的调度机制流程图,如图4所示,具体实施本发明实施例提供的一种mq多实例消息发送方法时,在一个实施例中,利用mq队列管理器组从缓存中选取mq队列管理器,将消息通过选取的mq队列管理器发送至对应的通道,包括:
49.利用mq队列管理器组从缓存中查找可用mq队列管理器列表;
50.在缓存中存在可用mq队列管理器列表时,从可用mq队列管理器列表中选取一个mq队列管理器,将消息通过选取的mq队列管理器发送至对应的通道。
51.实施例中,首先通过mq队列接收应用系统发来的消息,利用mq队列管理器组从缓存中查找可用mq队列管理器列表,在缓存中存在可用mq队列管理器列表
52.时,从可用mq队列管理器列表中随机选取一个mq队列管理器,将消息通过选取
53.的mq队列管理器发送至对应的通道。本发明通过加入队列管理器组,对mq多队列管理器进行调度管理。
54.进一步的,如图4所示,具体实施本发明实施例提供的一种mq多实例消息发送方法时,在一个实施例中,该方法还包括:
55.在缓存中未存在可用mq队列管理器列表时,从mq队列管理器组中配置好的多个mq队列管理器中选取一个mq队列管理器,将消息通过选取的mq队列管理器发送至对应的通道;
56.在消息发送成功时,将该选取的mq队列管理器加入可用mq队列管理器列表并缓存。
57.实施例中,当利用mq队列管理器组从缓存中查找可用mq队列管理器列表,在缓存中未存在可用mq队列管理器列表时,此时需要从mq队列管理器组中配置好的多个mq队列管理器中随机选取一个mq队列管理器,将消息通过选取的mq队列管理器发送至对应的通道;监测消息发送结果,在消息发送成功时,将该选取的mq队列管理器加入可用mq队列管理器列表并缓存,实现可用mq队列管理器列表的动态变化,保证可用mq队列管理器列表中的mq队列管理器随时处于可用状态。
58.从开发的角度来说,技术人员需要配置多个mq队列管理器并加入到mq队列管理器组中,mq队列在发送消息时通过mq队列管理器组选择mq队列管理器。
59.在采用本方案后,应用系统仍然采用配置的队列发送消息,但在内部配置了多个mq队列管理器,队列可以根据消息的发送状态来判断目前连接的队列管理器是否有效,如处于无效状态,队列将选择另一队列管理器进行消息重发,解决mq多实例下的高可用性。
60.图5为本发明实施例一种mq多实例消息发送方法的异常消息处理重发过程示意图,如图5所示,具体实施本发明实施例提供的一种mq多实例消息发送方法时,在一个实施例中,监测消息发送结果,在消息发送异常时,根据异常处理机制更换新的mq队列管理器重新发送消息,包括:
61.步骤501:监测消息发送结果;
62.步骤502:在消息发送成功时,标记该选取的mq队列管理器可用;
63.步骤503:在消息发送异常时,判断异常消息的类型;
64.步骤504:若异常消息的类型为系统类异常,则触发异常轮转机制,更换新的mq队列管理器重新发送消息;
65.步骤505:若异常消息的类型为非系统类异常,则根据消息重发机制重新发送消息。
66.实施例中,在获取到一个队列管理器并发送消息时如出现异常,需要根据异常的种类来进行分别处理,在对的异常消息处理重发时,主要过程包括:
67.首先,监测消息发送结果;消息发送结果分为成功或异常;然后,在消息发送成功时,标记该选取的mq队列管理器可用;接着,在消息发送异常时,判断异常消息的类型;下一步,若异常消息的类型为系统类异常,则触发异常轮转机制,更换新的mq队列管理器重新发送消息;最后,若异常消息的类型为非系统类异常,则根据消息重发机制重新发送消息。
68.本发明实施例的重点在于通过应用实现了针对多个mq实例的高可用机制,并针对消息发送过程中的异常设计了异常处理,异常轮转机制和消息重发机制的设计开发对本发明而言是最难的。要通过应用实现mq多实例的高可用特性,需要通过mq队列管理器组来对多实例予以调度管理,并通过异常处理和消息重发来实现高可用,这是本发明实施例的最核心的流程。本发明实施例中通过应用实现的mq多实例的高可用特性,其中mq多实例的调度管理、异常消息处理和消息重发模块的机制和协作,是本发明实施例的关键点。
69.图6为本发明实施例一种mq多实例消息发送方法的异常轮转机制流程图,如图图6所示,具体实施本发明实施例提供的一种mq多实例消息发送方法时,在一个实施例中,若异常消息的类型为系统类异常,则触发异常轮转机制,更换新的mq队列管理器重新发送消息,
包括:
70.若异常消息的类型为包括连接拒绝以及连接超时的系统类异常,则触发异常轮转机制,判断缓存中是否存在可用mq队列管理器;
71.当缓存中存在可用mq队列管理器时,选取一个mq队列管理器作为新的mq队列管理器,并删除发生异常的mq队列管理器;
72.利用新的mq队列管理器,重新发送消息至对应的通道;
73.当缓存中未存在可用mq队列管理器时,从mq队列管理器组中配置好的多个mq队列管理器中选取一个mq队列管理器作为新的mq队列管理器,
74.利用新的mq队列管理器,尝试重新发送消息至对应的通道,直至消息发送成功,将该新的mq队列管理器加入可用mq队列管理器列表并缓存。
75.实施例中,若异常为连接拒绝、连接超时等系统类异常,则触发异常轮转机制,判断缓存中是否存在可用mq队列管理器;当缓存中存在可用mq队列管理器时,则随机选取一个mq队列管理器作为新的mq队列管理器,并利用mq队列管理器组删除发生异常的mq队列管理器,保证缓存中的mq队列管理器处于可用的状态,并将不可用的mq队列管理器剔除,提升消息发送的效率,减少系统资源浪费;利用新的mq队列管理器,重新发送消息至对应的通道;当缓存中未存在可用mq队列管理器时,从mq队列管理器组中配置好的多个mq队列管理器中随机选取一个mq队列管理器作为新的mq队列管理器,利用新的mq队列管理器,尝试重新发送消息至对应的通道,直至消息发送成功,利用mq队列管理器组将该新的mq队列管理器加入可用mq队列管理器列表并缓存,实现可用mq队列管理器列表的动态增减。
76.若异常为连接拒绝、连接超时等系统类异常,则触发轮转机制,即判断缓存中是否存在可用队列管理器,如存在,则随机选择下一个队列管理器,并删除出问题的管理器;如缓存中不存在可用的队列管理器,则从配置中随机选择一个队列管理器并尝试再次发送,直到发送成功后缓存该队列管理器。
77.若异常为非系统类异常,则进入消息重发机制。
78.具体实施本发明实施例提供的一种mq多实例消息发送方法时,在一个实施例中,若异常消息的类型为非系统类异常,则根据消息重发机制重新发送消息,包括:
79.若异常消息的类型为非系统类异常,则将消息引入消息重发队列;
80.根据消息重发机制配置的重发策略,重新发送消息至对应的通道。
81.实施例中,针对消息发送时出现的非系统类异常,则进入消息重发队列,应用将根据配置的重发策略来处理,一般的策略包括最大次数重发和无限重发。
82.具体实施本发明实施例提供的一种mq多实例消息发送方法时,在一个实施例中,在重发策略为最大次数重发时,
83.设定消息重发次数阈值,每次重发的间隔按照设定倍率逐渐增加,如消息发送次数达到消息重发次数阈值且每次都是非系统类异常,则对外抛出异常后处理下一笔消息。
84.实施例中,最大次数重发即尝试发送指定次数,每次的重发间隔逐渐增加,如达到最大重发次数且每次都是非系统类异常,则对外抛出异常后处理下一笔消息。
85.具体实施本发明实施例提供的一种mq多实例消息发送方法时,在一个实施例中,在重发策略为无限重发时,
86.重复发送消息,直至消息成功发送至对应的通道或出现系统类异常。
87.无限重发即重复发送消息直到成功或出现系统类异常。
88.在采用本方案后,应用系统仍然采用配置的队列发送消息,但在内部配置了多个mq队列管理器,队列可以根据消息的发送状态来判断目前连接的队列管理器是否有效,如处于无效状态,队列将选择另一队列管理器进行消息重发,解决mq多实例下的高可用性;通过加入mq队列管理器组,对多个mq队列管理器进行调度管理,并在异常情况下引入了队列管理器轮转和消息重发机制;实现了针对多个mq实例的高可用机制,并针对消息发送过程中的异常设计了异常处理和消息重发机制;满足了生产环境中对mq高可用的硬性要求,对开发的侵入性相对较低,开发只要配置mq队列管理组即可,通过底层框架的方式予以实现,应用的改造成本低。
89.下面结合具体场景,对本发明实施例提供的一种mq多实例消息发送方法进行简要描述:
90.本发明从应用角度对多个mq实例进行统一管理,给出了一个mq多实例的高可用解决方案。本发明通过应用实现了多队列管理器的配置和消息发送。
91.在采用本方案后,应用系统仍然采用配置的队列发送消息,但在内部配置了多个mq队列管理器,队列可以根据消息的发送状态来判断目前连接的队列管理器是否有效,如处于无效状态,队列将选择另一队列管理器进行消息重发。
92.本发明通过加入队列管理器组,对mq多队列管理器进行调度管理,并在异常情况下引入了队列管理器轮转和消息重发机制,主要包括如下机制:
93.1.mq多实例的调度机制:
94.为确保mq多实例的高可用性,对原来的mq队列进行改造,加入了mq队列管理器组,由队列管理器组来管理各队列管理器,在应用发送消息时,缓存中如已存储了可用mq队列管理器列表,则在缓冲中随机选取一个mq队列管理器,如缓存中不存在,则随机选取一个配置好的队列管理器,根据发送消息的结果,将处于可用状态的队列管理器缓存,对发送消息失败的进入异常处理机制。
95.2.异常情况下的轮转机制:
96.在获取到一个队列管理器并发送消息时如出现异常,需要根据异常的种类来进行分别处理:
97.若异常为连接拒绝、连接超时等系统异常,则触发轮转机制,即判断缓存中是否存在可用队列管理器,如存在,则随机选择下一个队列管理器,并删除出问题的管理器;如缓存中不存在可用的队列管理器,则从配置中随机选择一个队列管理器并尝试再次发送,直到发送成功后缓存该队列管理器。
98.若异常为非系统类异常,则进入消息重发机制。
99.3.消息重发机制:
100.针对消息发送时出现的非系统类异常,则进入消息重发队列,应用将根据配置的重发策略来处理,一般的策略包括最大次数重发和无限重发,最大次数重发即尝试发送指定次数,每次的重发间隔逐渐增加,如达到最大重发次数每次都是非系统类异常,则对外抛出异常后处理下一笔消息;无限重发即重复发送消息直到成功或出现系统类异常。
101.从开发的角度,技术人员只需要配置多个mq队列管理器并加入到mq队列管理器组中,mq队列在发送消息时通过mq队列管理器组选择mq队列管理器。
102.本发明实施例的精髓在于通过应用实现了针对多个mq实例的高可用机制,并针对消息发送过程中的异常设计了异常处理和消息重发机制,这些机制的设计开发对本发明而言是最难的。
103.本发明实施例还提供一种mq多实例消息发送方法的模块化实例,共包括mq多实例调度模块、消息异常处理模块和消息重发模块。
104.其中mq多实例调度模块完成多个mq队列管理器的选取及缓存,对通过选取的队列管理器发送消息后的异常处理,则进入消息异常处理模块,异常处理模块对不同的异常进行分别处理,非系统类异常则进入消息重发模块,由消息重发模块根据重发策略进行消息重发;系统类异常则进入轮转机制,即通过缓存或配置中的mq队列管理器组选择下一个mq队列管理器并进行消息发送。
105.本发明实施例通过应用实现了mq多实例的高可用特性,具体通过mq多实例调度模块、消息异常处理模块和消息重发模块配合完成。
106.1.mq多实例调度模块接收应用发来的消息,选择mq队列管理器发送消息,缓存可用的mq队列管理器列表;
107.2.消息异常处理模块接收消息及异常信息后,根据异常信息类别,对系统类异常选择下一个可用的mq队列管理器进行发送并在成功后缓存;对非系统类异常进入消息重发模块;
108.3.消息重发模块接收待重发的消息,根据重发策略进行消息重发;
109.要通过应用实现mq多实例的高可用特性,需要通过mq队列管理器组来对多实例予以调度管理,并通过异常处理和消息重发来实现高可用,这是本发明最核心的流程。
110.本发明实施例中通过应用实现的mq多实例的高可用特性,其中mq多实例的调度管理、异常消息处理和消息重发模块的机制和协作,是本发明的关键点。
111.本发明实施例通过一系列机制及模块串联,实现了一种新型的mq多实例架构。优点如下:满足了生产环境中对mq高可用的硬性要求;对开发的侵入性相对较低,开发只要配置mq队列管理组即可;通过底层框架的方式予以实现,应用的改造成本低。
112.图7为运行本发明实施的一种mq多实例消息发送方法的计算机装置示意图,如图7所示,本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述一种mq多实例消息发送方法。
113.本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行实现上述一种mq多实例消息发送方法的计算机程序。
114.本发明实施例中还提供了一种mq多实例消息发送装置,如下面的实施例所述。由于该装置解决问题的原理与一种mq多实例消息发送方法相似,因此该装置的实施可以参见一种mq多实例消息发送方法的实施,重复之处不再赘述。
115.图8为本发明实施例一种mq多实例消息发送装置示意图,如图8所示,本发明实施例还提供一种mq多实例消息发送装置,具体实施时可以包括:
116.mq队列管理器配置模块801,用于配置多个mq队列管理器加入mq队列管理器组;
117.可用mq队列管理器列表确定模块802,用于在应用系统发来消息时,通过mq队列管理器组选取mq队列管理器,确定可用mq队列管理器列表并缓存;
118.mq多实例调度模块803,用于通过mq队列接收应用系统发来的消息,利用mq队列管理器组从缓存中选取mq队列管理器,将消息通过选取的mq队列管理器发送至对应的通道;
119.异常消息处理重发模块804,用于监测消息发送结果,在消息发送异常时,根据异常处理机制更换新的mq队列管理器重新发送消息。
120.具体实施本发明实施例提供的一种mq多实例消息发送装置时,在一个实施例中,前述的mq多实例调度模块,具体用于:
121.利用mq队列管理器组从缓存中查找可用mq队列管理器列表;
122.在缓存中存在可用mq队列管理器列表时,从可用mq队列管理器列表中选取一个mq队列管理器,将消息通过选取的mq队列管理器发送至对应的通道。
123.具体实施本发明实施例提供的一种mq多实例消息发送装置时,在一个实施例中,前述的mq多实例调度模块,还用于:
124.在缓存中未存在可用mq队列管理器列表时,从mq队列管理器组中配置好的多个mq队列管理器中选取一个mq队列管理器,将消息通过选取的mq队列管理器发送至对应的通道;
125.在消息发送成功时,将该选取的mq队列管理器加入可用mq队列管理器列表并缓存。
126.具体实施本发明实施例提供的一种mq多实例消息发送装置时,在一个实施例中,前述的异常消息处理重发模块,具体用于:
127.监测消息发送结果;
128.在消息发送成功时,标记该选取的mq队列管理器可用;
129.在消息发送异常时,判断异常消息的类型;
130.若异常消息的类型为系统类异常,则触发异常轮转机制,更换新的mq队列管理器重新发送消息;
131.若异常消息的类型为非系统类异常,则根据消息重发机制重新发送消息。
132.具体实施本发明实施例提供的一种mq多实例消息发送装置时,在一个实施例中,前述的异常消息处理重发模块,还用于:
133.若异常消息的类型为包括连接拒绝以及连接超时的系统类异常,则触发异常轮转机制,判断缓存中是否存在可用mq队列管理器;
134.当缓存中存在可用mq队列管理器时,选取一个mq队列管理器作为新的mq队列管理器,并删除发生异常的mq队列管理器;
135.利用新的mq队列管理器,重新发送消息至对应的通道;
136.当缓存中未存在可用mq队列管理器时,从mq队列管理器组中配置好的多个mq队列管理器中选取一个mq队列管理器作为新的mq队列管理器,
137.利用新的mq队列管理器,尝试重新发送消息至对应的通道,直至消息发送成功,将该新的mq队列管理器加入可用mq队列管理器列表并缓存。
138.具体实施本发明实施例提供的一种mq多实例消息发送装置时,在一个实施例中,前述的异常消息处理重发模块,还用于:
139.若异常消息的类型为非系统类异常,则将消息引入消息重发队列;
140.根据消息重发机制配置的重发策略,重新发送消息至对应的通道。
141.具体实施本发明实施例提供的一种mq多实例消息发送装置时,在一个实施例中,前述的异常消息处理重发模块,还用于:在重发策略为最大次数重发时,
142.设定消息重发次数阈值,每次重发的间隔按照设定倍率逐渐增加,如消息发送次数达到消息重发次数阈值且每次都是非系统类异常,则对外抛出异常后处理下一笔消息。
143.具体实施本发明实施例提供的一种mq多实例消息发送装置时,在一个实施例中,前述的异常消息处理重发模块,还用于:在重发策略为无限重发时,
144.重复发送消息,直至消息成功发送至对应的通道或出现系统类异常。
145.综上,本发明实施例提供的一种mq多实例消息发送方法和装置,包括:首先配置多个mq队列管理器加入mq队列管理器组;然后在应用系统发来消息时,通过mq队列管理器组选取mq队列管理器,确定可用mq队列管理器列表并缓存;下一步通过mq队列接收应用系统发来的消息,利用mq队列管理器组从缓存中选取mq队列管理器,将消息通过选取的mq队列管理器发送至对应的通道;最后监测消息发送结果,在消息发送异常时,根据异常处理机制更换新的mq队列管理器重新发送消息。本发明从应用角度对多个mq实例进行统一管理,给出了一个mq多实例的高可用解决方案,应用实现了多mq队列管理器的配置和消息发送。通过加入mq队列管理器组,对多个mq队列管理器进行调度管理,并在异常情况下引入了异常处理机制;实现了针对多个mq实例的高可用机制,并针对消息发送过程中的异常设计了;异常处理机制;满足了生产环境中对mq高可用的硬性要求,对开发的侵入性相对较低,开发只要配置mq队列管理组即可,通过底层框架的方式予以实现,应用的改造成本低。
146.在采用本发明实施例的方案后,应用系统仍然采用配置的队列发送消息,但在内部配置了多个mq队列管理器,队列可以根据消息的发送状态来判断目前连接的队列管理器是否有效,如处于无效状态,队列将选择另一队列管理器进行消息重发,解决mq多实例下的高可用性;通过加入mq队列管理器组,对多个mq队列管理器进行调度管理,并在异常情况下引入了队列管理器轮转和消息重发机制;实现了针对多个mq实例的高可用机制,并针对消息发送过程中的异常设计了异常处理和消息重发机制;满足了生产环境中对mq高可用的硬性要求,对开发的侵入性相对较低,开发只要配置mq队列管理组即可,通过底层框架的方式予以实现,应用的改造成本低。
147.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
148.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
149.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指
令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
150.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
151.以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1