CN112988428A - 分布式消息异步通知中间件实现方法及系统 - Google Patents
分布式消息异步通知中间件实现方法及系统 Download PDFInfo
- Publication number
- CN112988428A CN112988428A CN202110450975.4A CN202110450975A CN112988428A CN 112988428 A CN112988428 A CN 112988428A CN 202110450975 A CN202110450975 A CN 202110450975A CN 112988428 A CN112988428 A CN 112988428A
- Authority
- CN
- China
- Prior art keywords
- message
- request
- processing
- task
- failure times
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供分布式消息异步通知中间件实现方法及系统,接收HTTP请求并将其持久化至数据库中,并根据优先级别进行分类;对于优先级别高的请求实时处理;将优先级别正常的数据推送至延迟队列池中等待固定时间后进行处理;判断处理后的响应报文是否包含设置的期望内容;若响应报文包含期望内容,则将信息状态更新为成功,该任务结束;若响应报文不包含期望内容,则计算失败次数并判断其是否已达配置设定的最大重试次数;若失败次数小于最大重试次数,将对应的请求消息推送至延迟队列池,重复等待处理;若失败次数大于最大重试次数,则调用通信软件进行异常告警通知,任务结束。实现了分布式系统异步通知消息可追溯与异常告警,保证业务闭环。
Description
技术领域
本发明涉及计算机应用技术领域,具体涉及分布式消息异步通知中间件实现方法及系统。
背景技术
在信息系统交互下经常会有通知内部服务或外部系统异步接口的出现。因HTTP请求的不可控性会出现HTTP请求接口响应失败(响应状态码值为403,500,502,503等视为请求失败)或者连接超时。发生的情况是浏览器开始侦听该服务器的响应消息,但是由于各种原因该响应可能永远不会到达(例如,服务器处于脱机状态)。因此,如果X秒钟后服务器仍然没有响应,您的浏览器将在等待时“放弃”,否则可能会因为等待永恒而卡住,响应结果报文超时等导致业务应用系统出现两边业务不一致行为。例如应用系统A与B系统交互支付业务,A系统支付状态为支付成功,但B系统支付状态为失败,实际业务支付状态为成功。
这是一种典型的分布式系统事务问题。业内的通用做法如下:
采用定时任务轮询补偿的方法,通过定时任务(固定时间频率的任务)扫描因HTTP请求失败或异常的信息以补偿的形式通知(将失败的业务再执行一次)。这种做法较为古老,且性能较低。每一个业务用例场景都需要写定时任务做补偿。当业务发展较快用例场景较多则对应的定时任务较多产生定时任务爆炸问题。
采用单体式内存重试(如spring retry)的方法,此种方式是在内存中做重试机制,如果应用服务重启则会断开导致信息丢失,导致业务不一致。例如网络服务A因操作系统重启,操作系统重启会将内存中的内容清空返回初始状态。而当时未完成的任务就会丢失,从而导致业务未完成,对公司产生的一定的损失。
发明内容
本发明的目的是提供分布式消息异步通知中间件实现方法及系统,解决分布式系统异步通知消息可追溯性,解决分布式系统业务最终一致性问题,能够及时对易想金聪告警。
本发明提供了如下的技术方案:
分布式消息异步通知中间件实现方法及系统,包括以下步骤:
S1、中间件接收HTTP请求并将请求的消息持久化至数据库中,并将持久化成功后的数据根据优先级别高与优先级别正常进行分类;
S2、对于优先级别高的请求实时进行处理;对于优先级别正常的数据推送至RabbitMQ延迟队列池中,根据事先设定的队列延迟策略,对到达延迟时间后的延迟队列消息进行处理;
S3、以HTTP接口形式调用外部系统对上述数据进行处理,并判断响应报文是否包含设置的期望内容;
S4、若所述响应报文包含所述期望内容,则将信息状态更新为成功,该请求消息对应的任务完成并结束;若所述响应报文不包含所述期望内容,则计算失败次数并判断其是否已达配置事先设定的最大重试次数;
S5、若失败次数小于最大重试次数,将对应的请求消息推送至延迟队列池,并重复S2-S4;若失败次数大于最大重试次数,则调用通信软件进行异常告警通知,任务结束。
优选的,步骤S5所述的通信软件为钉钉。
优选的,所述RabbitMQ为实现了高级消息队列协议的开源消息代理软件。
优选的,包括:
信息接收模块,接收用户通过应用软件发送的消息请求,并将请求消息进行持久化处理,将持久化成功后的消息传输至数据库;
数据库,接收信息接收模块发送的请求消息,并将其根据优先级别将其分类存储,将优先级高的请求消息发送至操作系统软件进行处理;将优先级正常的请求消息发送至延迟RabbitMQ软件延迟消息队列;
延迟消息队列,设定有队列延迟策略,将到达了延迟时间后的请求消息发送至操作系统软件进行处理;
信息反馈模块,判断操作系统软件处理后的响应报文是否包含设置的期望内容,当响应报文包含设置的期望内容时,判断任务成功,并结束任务;当响应报文不包含设置的期望内容时,判断任务失败,对失败次数进行计数,并将失败次数与最大重试次数进行对比,当失败次数小于最大重试次数时,将请求信息传输至延迟消息队列进行等待处理,当失败次数大于最大重试次数时,判断任务异常,并将已成信息告知事先设定的告警终端。
优选的,以HTTP接口形式调用外部所述操作系统软件进行信息处理。
本发明的有益效果是:根据请求信息的优先级对其进行分布处理,使优先级正常的数据进行固定时间的等待再进行处理,实现了对不同优先级的信息分级处理,减少进程等待时间,提高执行效率;调用外部系统对不同优先级的数据进行统一处理,解决分布式系统业务最终一致性问题,从而保证业务闭环;对失败次数进行计算,并根据其数量进行实时告警,便于研发人员第一时间知晓并及时处理。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1是本发明实现方法流程图;
图2是本发明系统架构图;
图3是本发明应用架构图;
图4是本发明实施例应用时序图。
具体实施方式
如图1-3所示,分布式消息异步通知中间件实现方法,包括以下步骤:
S1、中间件接收HTTP请求并将请求的消息持久化至数据库中,并将持久化成功后的数据根据优先级别高与优先级别正常进行分类;
S2、对于优先级别高的请求实时进行处理;对于优先级别正常的数据推送至RabbitMQ延迟队列池中,根据事先设定的队列延迟策略,对到达延迟时间后的延迟队列消息进行处理;
S3、以HTTP接口形式调用外部系统对上述数据进行处理,并判断响应报文是否包含设置的期望内容;
S4、若响应报文包含期望内容,则将信息状态更新为成功,该请求消息对应的任务完成并结束;若响应报文不包含期望内容,则计算失败次数并判断其是否已达配置事先设定的最大重试次数;
S5、若失败次数小于最大重试次数,将对应的请求消息推送至延迟队列池,并重复S2-S4;若失败次数大于最大重试次数,则调用通信软件进行异常告警通知,任务结束。
优选的一种实施例,步骤S5的通信软件为钉钉。
其中,RabbitMQ为实现了高级消息队列协议的开源消息代理软件。
如图2所示,分布式消息异步通知中间件实现系统,包括:
信息接收模块,接收用户通过应用软件发送的消息请求,并将请求消息进行持久化处理,将持久化成功后的消息传输至数据库;
数据库,接收信息接收模块发送的请求消息,并将其根据优先级别将其分类存储,将优先级高的请求消息发送至操作系统软件进行处理;将优先级正常的请求消息发送至延迟RabbitMQ软件延迟消息队列;
延迟消息队列,设定有队列延迟策略,将到达了延迟时间后的请求消息发送至操作系统软件进行处理;
信息反馈模块,判断操作系统软件处理后的响应报文是否包含设置的期望内容,当响应报文包含设置的期望内容时,判断任务成功,并结束任务;当响应报文不包含设置的期望内容时,判断任务失败,对失败次数进行计数,并将失败次数与最大重试次数进行对比,当失败次数小于最大重试次数时,将请求信息传输至延迟消息队列进行等待处理,当失败次数大于最大重试次数时,判断任务异常,并将已成信息告知事先设定的告警终端。
优选的一种实施例,以HTTP接口形式调用外部操作系统软件进行信息处理。
具体的,本发明提供的中间件,其任务属性包括:
url:HTTP访问url;headers:HTTP接口请求头信息;body:消息体内容;httpMethod:请求方法GET、POST;期望结果:期望的报文结果包含内容;来源应用:发起业务源;目标应用:远程调用目标应用;来源IP:调用方IP地址;优先级别:HTTP请求的优先级别,高级别、正常级别,高级别的必达任务处理速度优先,类似高速路而正常级别的类似于普通公路。此参数决定了任务的处理速度;已重试次数:当前已重试次数;最大重试次数:任务失败时执行的最大重试次数。
如图4所示,来源应用接入最新版本miss-client SDK(JAVA)或通过HTTP接口形式跨语言,配置分配的应用ID(鉴权)即可使用。
本发明根据请求信息的优先级对其进行分布处理,使优先级正常的数据进行固定时间的等待再进行处理,实现了对不同优先级的信息分级处理,减少进程等待时间,提高执行效率;调用外部系统对不同优先级的数据进行统一处理,解决分布式系统业务最终一致性问题,从而保证业务闭环;对失败次数进行计算,并根据其数量进行实时告警,便于研发人员第一时间知晓并及时处理。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.分布式消息异步通知中间件实现方法,其特征在于,包括以下步骤:
S1、中间件接收HTTP请求并将请求的消息持久化至数据库中,并将持久化成功后的数据根据优先级别高与优先级别正常进行分类;
S2、对于优先级别高的请求实时进行处理;对于优先级别正常的数据推送至RabbitMQ延迟队列池中,根据事先设定的队列延迟策略,对到达延迟时间后的延迟队列消息进行处理;
S3、以HTTP接口形式调用外部系统对上述数据进行处理,并判断响应报文是否包含设置的期望内容;
S4、若所述响应报文包含所述期望内容,则将信息状态更新为成功,该请求消息对应的任务完成并结束;若所述响应报文不包含所述期望内容,则计算失败次数并判断其是否已达配置事先设定的最大重试次数;
S5、若失败次数小于最大重试次数,将对应的请求消息推送至延迟队列池,并重复S2-S4;若失败次数大于最大重试次数,则调用通信软件进行异常告警通知,任务结束。
2.根据权利要求1所述的分布式消息异步通知中间件实现方法,其特征在于,步骤S5所述的通信软件为钉钉。
3.根据权利要求1所述的分布式消息异步通知中间件实现方法,其特征在于,所述RabbitMQ为实现了高级消息队列协议的开源消息代理软件。
4.分布式消息异步通知中间件实现系统,其特征在于,包括:
信息接收模块,接收用户通过应用软件发送的消息请求,并将请求消息进行持久化处理,将持久化成功后的消息传输至数据库;
数据库,接收信息接收模块发送的请求消息,并将其根据优先级别将其分类存储,将优先级高的请求消息发送至操作系统软件进行处理;将优先级正常的请求消息发送至延迟RabbitMQ软件延迟消息队列;
延迟消息队列,设定有队列延迟策略,将到达了延迟时间后的请求消息发送至操作系统软件进行处理;
信息反馈模块,判断操作系统软件处理后的响应报文是否包含设置的期望内容,当响应报文包含设置的期望内容时,判断任务成功,并结束任务;当响应报文不包含设置的期望内容时,判断任务失败,对失败次数进行计数,并将失败次数与最大重试次数进行对比,当失败次数小于最大重试次数时,将请求信息传输至延迟消息队列进行等待处理,当失败次数大于最大重试次数时,判断任务异常,并将已成信息告知事先设定的告警终端。
5.根据权利要求4所述的分布式消息异步通知中间件实现系统,其特征在于,以HTTP接口形式调用外部所述操作系统软件进行信息处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110450975.4A CN112988428A (zh) | 2021-04-26 | 2021-04-26 | 分布式消息异步通知中间件实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110450975.4A CN112988428A (zh) | 2021-04-26 | 2021-04-26 | 分布式消息异步通知中间件实现方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112988428A true CN112988428A (zh) | 2021-06-18 |
Family
ID=76340118
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110450975.4A Pending CN112988428A (zh) | 2021-04-26 | 2021-04-26 | 分布式消息异步通知中间件实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112988428A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113434307A (zh) * | 2021-06-22 | 2021-09-24 | 北京沃东天骏信息技术有限公司 | 任务发送的处理、任务处理的方法、装置、系统及设备 |
CN113923094A (zh) * | 2021-09-01 | 2022-01-11 | 浙江绿城未来数智科技有限公司 | 一种智慧社区异构系统消息互通的方法 |
CN114024901A (zh) * | 2022-01-05 | 2022-02-08 | 中邮消费金融有限公司 | 一种消息隔离转发方法及系统 |
CN114124881A (zh) * | 2021-11-30 | 2022-03-01 | 中国建设银行股份有限公司 | 一种基于优先级的消息推送方法及相关装置 |
CN114172877A (zh) * | 2021-11-11 | 2022-03-11 | 欧冶云商股份有限公司 | 一种基于http协议的中间件数据传输方法、装置、设备及存储介质 |
CN116700940A (zh) * | 2023-08-08 | 2023-09-05 | 成都数智创新精益科技有限公司 | 一种基于封装类的请求处置方法及系统及装置及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104346215A (zh) * | 2013-08-07 | 2015-02-11 | 中兴通讯股份有限公司 | 一种任务调度服务系统及方法 |
CN110224922A (zh) * | 2019-05-21 | 2019-09-10 | 成都路行通信息技术有限公司 | 一种基于RabbitMQ的异步消息重试方法、系统及系统构建方法 |
CN110413384A (zh) * | 2019-06-25 | 2019-11-05 | 腾讯科技(深圳)有限公司 | 延时任务处理方法及装置、存储介质、电子设备 |
CN111427711A (zh) * | 2020-04-01 | 2020-07-17 | 山东汇贸电子口岸有限公司 | 一种基于RabbitMQ的消息推送方法 |
CN111580939A (zh) * | 2020-04-01 | 2020-08-25 | 微梦创科网络科技(中国)有限公司 | 一种分级异步处理事务的方法及装置 |
-
2021
- 2021-04-26 CN CN202110450975.4A patent/CN112988428A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104346215A (zh) * | 2013-08-07 | 2015-02-11 | 中兴通讯股份有限公司 | 一种任务调度服务系统及方法 |
CN110224922A (zh) * | 2019-05-21 | 2019-09-10 | 成都路行通信息技术有限公司 | 一种基于RabbitMQ的异步消息重试方法、系统及系统构建方法 |
CN110413384A (zh) * | 2019-06-25 | 2019-11-05 | 腾讯科技(深圳)有限公司 | 延时任务处理方法及装置、存储介质、电子设备 |
CN111427711A (zh) * | 2020-04-01 | 2020-07-17 | 山东汇贸电子口岸有限公司 | 一种基于RabbitMQ的消息推送方法 |
CN111580939A (zh) * | 2020-04-01 | 2020-08-25 | 微梦创科网络科技(中国)有限公司 | 一种分级异步处理事务的方法及装置 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113434307A (zh) * | 2021-06-22 | 2021-09-24 | 北京沃东天骏信息技术有限公司 | 任务发送的处理、任务处理的方法、装置、系统及设备 |
CN113923094A (zh) * | 2021-09-01 | 2022-01-11 | 浙江绿城未来数智科技有限公司 | 一种智慧社区异构系统消息互通的方法 |
CN114172877A (zh) * | 2021-11-11 | 2022-03-11 | 欧冶云商股份有限公司 | 一种基于http协议的中间件数据传输方法、装置、设备及存储介质 |
CN114172877B (zh) * | 2021-11-11 | 2024-01-26 | 欧冶云商股份有限公司 | 一种基于http协议的中间件数据传输方法、装置、设备及存储介质 |
CN114124881A (zh) * | 2021-11-30 | 2022-03-01 | 中国建设银行股份有限公司 | 一种基于优先级的消息推送方法及相关装置 |
CN114124881B (zh) * | 2021-11-30 | 2023-06-20 | 中国建设银行股份有限公司 | 一种基于优先级的消息推送方法及相关装置 |
CN114024901A (zh) * | 2022-01-05 | 2022-02-08 | 中邮消费金融有限公司 | 一种消息隔离转发方法及系统 |
CN116700940A (zh) * | 2023-08-08 | 2023-09-05 | 成都数智创新精益科技有限公司 | 一种基于封装类的请求处置方法及系统及装置及介质 |
CN116700940B (zh) * | 2023-08-08 | 2023-10-03 | 成都数智创新精益科技有限公司 | 一种基于封装类的请求处置方法及系统及装置及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112988428A (zh) | 分布式消息异步通知中间件实现方法及系统 | |
US11223990B2 (en) | WiFi and cellular communication traversal | |
US10383018B2 (en) | WiFi and cellular communication switching | |
RU2363040C2 (ru) | Доставка сообщений между двумя конечными пунктами с конфигурируемыми гарантиями и признаками | |
US20030140149A1 (en) | Communication protocol for use in controlling communications in a monitoring service system | |
CN111104235B (zh) | 一种基于队列的业务请求异步处理方法及装置 | |
US20070162560A1 (en) | System and method for asynchronous request response | |
US6934768B1 (en) | Dynamic modification of fragmentation size cluster communication parameter in clustered computer system | |
EP1730929B1 (en) | Method and apparatus for communicating data between computer devices | |
US8484281B2 (en) | System and method for callbacks based on web service addressing | |
CN110413425B (zh) | 第三方消息回调方法、装置、服务器和存储介质 | |
JP2009531879A (ja) | メッセージ再伝送のための方法およびシステム並びにシステム間メッセージ配信のための方法およびシステム | |
US20030133464A1 (en) | Customer-based service system including a cascaded pipeline with self-monitoring relays | |
CN104579905A (zh) | 消息传递方法和系统及mom服务器、接收端 | |
CN112799860A (zh) | 基于消息队列和搜索引擎实现服务回调的方法 | |
US7472161B2 (en) | System for ensuring client access to messages from a server | |
CN113986501A (zh) | 实时数据库api无中断调用方法、系统、存储介质及服务器 | |
US6553406B1 (en) | Process thread system receiving request packet from server thread, initiating process thread in response to request packet, synchronizing thread process between clients-servers. | |
JP7030217B2 (ja) | メッセージ送受信方法、通信装置、及びプログラム | |
US20090172122A1 (en) | Message Transmission Method, Message Transmission Device, and Storage Medium Recorded with Message Transmission Program | |
CN115865886B (zh) | 一种基于http的跨网络数据交互方法和装置 | |
US8060568B2 (en) | Real time messaging framework hub to intercept and retransmit messages for a messaging facility | |
WO2007004232A1 (en) | Device management across firewall architecture | |
WO2024052981A1 (ja) | 処理装置、処理方法およびプログラム | |
US20030172092A1 (en) | System and method for client-server communication |
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 |