CN111404643A - 一种基于消息队列的数据收发处理方法 - Google Patents
一种基于消息队列的数据收发处理方法 Download PDFInfo
- Publication number
- CN111404643A CN111404643A CN202010161079.1A CN202010161079A CN111404643A CN 111404643 A CN111404643 A CN 111404643A CN 202010161079 A CN202010161079 A CN 202010161079A CN 111404643 A CN111404643 A CN 111404643A
- Authority
- CN
- China
- Prior art keywords
- message
- state
- consumer
- queue
- status
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/1607—Details of the supervisory signal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- 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
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Communication Control (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
本发明公开一种基于消息队列的数据收发处理方法,涉及信息技术领域;消息生产者定义消息状态,消息本身以及消息队列与消息消费者之间的状态,消息生产者接收消息队列和消息消费者的ACK消息及上一次消息状态时,更新数据,并判断消息是否需要重发,消息队列收到消息消费者的ACK消息及上一次消息状态时,更新数据,并更改消息状态,查看是否存在需要发送到消息消费者的消息,消息消费者收到消息,更改消息状态,返回ACK消息及消息状态,利用本发明方法达到消息发送的精确性,原子性,一致性,保证三者的消息同步一致,不会造成某一条消息的漏发或者重发。
Description
技术领域
本发明公开一种数据收发处理方法,涉及信息技术领域,具体地说是一种基于消息队列的数据收发处理方法。
背景技术
最初互联网发展,消息都是同步发送的,发送方将消息发送到接口方,无需中间服务商,你来我往方便快捷。但是当网络飞速发展,信息交互繁忙的时候,数以万计的消息不再适合简单同步直接发送。随之,出现了RPC同步技术,虽然效率有所提升,但是依旧无法解决信息爆炸的现状。于是出现了消息的异步处理机制,发送方将消息发送到消息服务器,消息服务器发送到接收方,消息可以正常的接收和发送,但是成百上千条数据信息同时涌入消息服务器,分发信息对应不同的消费者,势必会出现发送的信息一致性问题,其次,发送消息失败或是接收不到,重复的发送消息导致生成重复的订单,容易在消息发送链路产生的巨大负载压力。
发明内容
本发明针对现有技术的问题,提供一种基于消息队列的数据收发处理方法,解决MQ异步处理机制产生的消息不一致的问题,保证了信息发送的稳定性和安全性以及产品的高可用。
本发明提出的具体方案是:
一种基于消息队列的数据收发处理方法:消息生产者定义消息状态,消息本身以及消息队列与消息消费者之间的状态,
消息发送过程中,消息生产者接收消息队列和消息消费者的ACK消息及上一次消息状态时,更新数据,并判断消息是否需要重发,
消息队列收到消息消费者的ACK消息及上一次消息状态时,更新数据,并更改消息状态,查看是否存在需要发送到消息消费者的消息,
消息消费者收到消息,更改消息状态,返回ACK消息及消息状态。
所述的一种基于消息队列的数据收发处理方法中消息生产者定期查询消息的消息状态,根据消息预设的发送次数,判断消息是否需要重发。
所述的一种基于消息队列的数据收发处理方法中消息队列定期查询消息的消息状态,根据消息状态查看是否存在需要发送到消息消费者的消息或是否需要删除消息。
所述的一种基于消息队列的数据收发处理方法中消息状态包括待发送、发送成功及发送失败。
所述的一种基于消息队列的数据收发处理方法中超过预设的发送次数,消息的消息状态为发送失败,并利用统一的标记进行设置。
所述的一种基于消息队列的数据收发处理方法中针对消息状态为发送失败的消息,进行告警。
所述的一种基于消息队列的数据收发处理方法中消息生产者利用数据库表存储消息状态,消息本身以及消息队列与消息消费者之间的状态。
一种基于消息队列的数据收发处理系统,包括消息生产者、消息队列及消息消费者,
消息生成者定义消息状态,消息本身以及消息队列与消息消费者之间的状态,
消息发送过程中,消息生产者接收消息队列和消息消费者的ACK消息及上一次消息状态时,更新数据,并判断消息是否需要重发,
消息队列收到消息消费者的ACK消息及上一次消息状态时,更新数据,并更改消息状态,查看是否存在需要发送到消息消费者的消息,
消息消费者收到消息,更改消息状态,返回ACK消息及消息状态。
本发明的有益之处是:
本发明提供一种基于消息队列的数据收发处理方法,消息生产者接收消息队列和消息消费者的ACK消息及上一次消息状态时,更新数据,并判断消息是否需要重发,消息队列收到消息消费者的ACK消息及上一次消息状态时,更新数据,并更改消息状态,查看是否存在需要发送到消息消费者的消息,消息消费者收到消息,更改消息状态,返回ACK消息及消息状态,利用本发明方法达到消息发送的精确性,原子性,一致性,保证三者的消息同步一致,不会造成某一条消息的漏发或者重发。
附图说明
图1是本发明方法流程示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
本发明提供一种基于消息队列的数据收发处理方法:消息生产者定义消息状态,消息本身以及消息队列与消息消费者之间的状态,
消息发送过程中,消息生产者接收消息队列和消息消费者的ACK消息及上一次消息状态时,更新数据,并判断消息是否需要重发,
消息队列收到消息消费者的ACK消息及上一次消息状态时,更新数据,并更改消息状态,查看是否存在需要发送到消息消费者的消息,
消息消费者收到消息,更改消息状态,返回ACK消息及消息状态。
利用本发明方法进行数据收发处理,具体过程为:
消息生产者在发送消息的时在本地自定义一张数据库表,定义三个字段:消息状态,消息本身,MQ与消费者之间的状态,
其中消息状态:待发送,发送成功,发送失败;
将消息记录到本地的数据库,定时去查看消息的状态,并更新DB的字段值,
消息生产者发送消息,MQ在收到消息之后,更新数据,将信息记录到存储中,并返回消息状态ACK到消息生产者,以及返回上一次消息状态为待发送,表示可待发送给消息消费者,消息生产者接收消息队列和消息消费者的ACK消息及上一次消息状态时,更新数据,并判断消息是否需要重发,
MQ查看是否存在需要发送到消息消费者的消息,有需要发送的消息将消息发送到消息接收者,用ACK的方式确认,第一次收到消息之后不直接删除,记录下来,接收到MQ的消息之后,消息接收者处理信息成功并返回ACK及消息状态。
在上述过程中,消息生产者定期查询消息的消息状态,执行定时任务,定期查询数据库表,消息预设的发送次数为3,如果存在消息的状态为预发送,并且消息的发送次数<3次,那么发送该条消息并将消息的状态更改为待确认并更改消息的发送次数加1,
MQ接收到消息之后,将消息放置在存储中,同时返回消息确认信息,更改消息为待发送,定期查询消息状态为待发送的发送消息到消息消费者,同时查看消息中是否有发送成功状态的消息,如果有则删除,
消息消费者接收到消息之后,返回ACK消息确认信息,并返回发送成功的消息状态。
在上述过程中,当消息预设的发送次数为3,超过预设的发送次数3,消息的消息状态为发送失败,并可利用统一的标记进行设置,同时将消息发送失败的消息进行告警,通知相应人员,人工进行特定消息的收发。
本发明还提供一种基于消息队列的数据收发处理系统,包括消息生产者、消息队列及消息消费者,
消息生成者定义消息状态,消息本身以及消息队列与消息消费者之间的状态,
消息发送过程中,消息生产者接收消息队列和消息消费者的ACK消息及上一次消息状态时,更新数据,并判断消息是否需要重发,
消息队列收到消息消费者的ACK消息及上一次消息状态时,更新数据,并更改消息状态,查看是否存在需要发送到消息消费者的消息,
消息消费者收到消息,更改消息状态,返回ACK消息及消息状态。
利用本发明系统进行数据收发处理,具体过程为:
消息生产者在发送消息的时在本地自定义一张数据库表,定义三个字段:消息状态,消息本身,MQ与消费者之间的状态,
其中消息状态:待发送,发送成功,发送失败;
将消息记录到本地的数据库,定时去查看消息的状态,并更新DB的字段值,
消息生产者发送消息,MQ在收到消息之后,更新数据,将信息记录到存储中,并返回消息状态ACK到消息生产者,以及返回上一次消息状态为待发送,表示可待发送给消息消费者,消息生产者接收消息队列和消息消费者的ACK消息及上一次消息状态时,更新数据,并判断消息是否需要重发,
MQ查看是否存在需要发送到消息消费者的消息,有需要发送的消息将消息发送到消息接收者,用ACK的方式确认,第一次收到消息之后不直接删除,记录下来,接收到MQ的消息之后,消息接收者处理信息成功并返回ACK及消息状态。
在上述过程中,消息生产者定期查询消息的消息状态,执行定时任务,定期查询数据库表,消息预设的发送次数为3,如果存在消息的状态为预发送,并且消息的发送次数<3次,那么发送该条消息并将消息的状态更改为待确认并更改消息的发送次数加1,
MQ接收到消息之后,将消息放置在存储中,同时返回消息确认信息,更改消息为待发送,定期查询消息状态为待发送的发送消息到消息消费者,同时查看消息中是否有发送成功状态的消息,如果有则删除,
消息消费者接收到消息之后,返回ACK消息确认信息,并返回发送成功的消息状态。
在上述过程中,当消息预设的发送次数为3,超过预设的发送次数3,消息的消息状态为发送失败,并可利用统一的标记进行设置,同时将消息发送失败的消息进行告警,通知相应人员,人工进行特定消息的收发。
以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。
Claims (8)
1.一种基于消息队列的数据收发处理方法,其特征是消息生产者定义消息状态,消息本身以及消息队列与消息消费者之间的状态,
消息发送过程中,消息生产者接收消息队列和消息消费者的ACK消息及上一次消息状态时,更新数据,并判断消息是否需要重发,
消息队列收到消息消费者的ACK消息及上一次消息状态时,更新数据,并更改消息状态,查看是否存在需要发送到消息消费者的消息,
消息消费者收到消息,更改消息状态,返回ACK消息及消息状态。
2.根据权利要求1所述的一种基于消息队列的数据收发处理方法,其特征是消息生产者定期查询消息的消息状态,根据消息预设的发送次数,判断消息是否需要重发。
3.根据权利要求1或2所述的一种基于消息队列的数据收发处理方法,其特征是消息队列定期查询消息的消息状态,根据消息状态查看是否存在需要发送到消息消费者的消息或是否需要删除消息。
4.根据权利要求1-3所述的一种基于消息队列的数据收发处理方法,其特征是消息状态包括待发送、发送成功及发送失败。
5.根据权利要求4所述的一种基于消息队列的数据收发处理方法,其特征是超过预设的发送次数,消息的消息状态为发送失败,并利用统一的标记进行设置。
6.根据权利要求5所述的一种基于消息队列的数据收发处理方法,其特征是针对消息状态为发送失败的消息,进行告警。
7.根据权利要求1或5或6所述的一种基于消息队列的数据收发处理方法,其特征是消息生产者利用数据库表存储消息状态,消息本身以及消息队列与消息消费者之间的状态。
8.一种基于消息队列的数据收发处理系统,其特征是包括消息生产者、消息队列及消息消费者,
消息生成者定义消息状态,消息本身以及消息队列与消息消费者之间的状态,
消息发送过程中,消息生产者接收消息队列和消息消费者的ACK消息及上一次消息状态时,更新数据,并判断消息是否需要重发,
消息队列收到消息消费者的ACK消息及上一次消息状态时,更新数据,并更改消息状态,查看是否存在需要发送到消息消费者的消息,
消息消费者收到消息,更改消息状态,返回ACK消息及消息状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010161079.1A CN111404643A (zh) | 2020-03-10 | 2020-03-10 | 一种基于消息队列的数据收发处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010161079.1A CN111404643A (zh) | 2020-03-10 | 2020-03-10 | 一种基于消息队列的数据收发处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111404643A true CN111404643A (zh) | 2020-07-10 |
Family
ID=71430771
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010161079.1A Pending CN111404643A (zh) | 2020-03-10 | 2020-03-10 | 一种基于消息队列的数据收发处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111404643A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111884769A (zh) * | 2020-08-06 | 2020-11-03 | 中国银行股份有限公司 | 消息同步方法及装置 |
CN112134657A (zh) * | 2020-09-12 | 2020-12-25 | 安阳师范学院 | 基于感知和重传的两路异步消息传输方法 |
CN112380039A (zh) * | 2021-01-13 | 2021-02-19 | 常州微亿智造科技有限公司 | 微服务架构下的消息消费方法、装置和存储介质 |
CN112437001A (zh) * | 2020-11-16 | 2021-03-02 | 深圳壹账通智能科技有限公司 | 保证消息可靠性投递与消费方法、装置 |
CN117331716A (zh) * | 2023-10-18 | 2024-01-02 | 广州方舟信息科技有限公司 | 一种消息处理方法及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130262589A1 (en) * | 2012-03-27 | 2013-10-03 | Microsoft Corporation | Communicating per-recipient delivery statuses of multi-recipient messages in multiline simple mail transfer protocol responses |
WO2017049927A1 (zh) * | 2015-09-22 | 2017-03-30 | 乐视控股(北京)有限公司 | 消息分发的方法、装置及系统 |
CN106777026A (zh) * | 2016-12-08 | 2017-05-31 | 用友网络科技股份有限公司 | 支持微服务架构事务最终一致性的方法、装置及系统 |
CN108009027A (zh) * | 2017-11-23 | 2018-05-08 | 北京百度网讯科技有限公司 | 队列消息一致性的实现方法、装置、设备及存储介质 |
US20180174140A1 (en) * | 2014-12-18 | 2018-06-21 | Ipco 2012 Limited | Device, System, Method and Computer Program Product for Processing Electronic Transaction Requests |
CN108234599A (zh) * | 2017-12-06 | 2018-06-29 | 链家网(北京)科技有限公司 | 一种消息重发方法及系统 |
CN109063019A (zh) * | 2018-07-12 | 2018-12-21 | 山东汇贸电子口岸有限公司 | 一种基于生产者消费者模式的轻量级垂直网络爬虫的实现方法 |
-
2020
- 2020-03-10 CN CN202010161079.1A patent/CN111404643A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130262589A1 (en) * | 2012-03-27 | 2013-10-03 | Microsoft Corporation | Communicating per-recipient delivery statuses of multi-recipient messages in multiline simple mail transfer protocol responses |
US20180174140A1 (en) * | 2014-12-18 | 2018-06-21 | Ipco 2012 Limited | Device, System, Method and Computer Program Product for Processing Electronic Transaction Requests |
WO2017049927A1 (zh) * | 2015-09-22 | 2017-03-30 | 乐视控股(北京)有限公司 | 消息分发的方法、装置及系统 |
CN106777026A (zh) * | 2016-12-08 | 2017-05-31 | 用友网络科技股份有限公司 | 支持微服务架构事务最终一致性的方法、装置及系统 |
CN108009027A (zh) * | 2017-11-23 | 2018-05-08 | 北京百度网讯科技有限公司 | 队列消息一致性的实现方法、装置、设备及存储介质 |
CN108234599A (zh) * | 2017-12-06 | 2018-06-29 | 链家网(北京)科技有限公司 | 一种消息重发方法及系统 |
CN109063019A (zh) * | 2018-07-12 | 2018-12-21 | 山东汇贸电子口岸有限公司 | 一种基于生产者消费者模式的轻量级垂直网络爬虫的实现方法 |
Non-Patent Citations (2)
Title |
---|
徐进等: "基于消息通信的分布式系统最终一致性平台", 《计算机应用》 * |
徐震等: "RabbitMQ小消息确认机制优化", 《计算机系统应用》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111884769A (zh) * | 2020-08-06 | 2020-11-03 | 中国银行股份有限公司 | 消息同步方法及装置 |
CN111884769B (zh) * | 2020-08-06 | 2023-10-27 | 中国银行股份有限公司 | 消息同步方法及装置 |
CN112134657A (zh) * | 2020-09-12 | 2020-12-25 | 安阳师范学院 | 基于感知和重传的两路异步消息传输方法 |
CN112437001A (zh) * | 2020-11-16 | 2021-03-02 | 深圳壹账通智能科技有限公司 | 保证消息可靠性投递与消费方法、装置 |
CN112380039A (zh) * | 2021-01-13 | 2021-02-19 | 常州微亿智造科技有限公司 | 微服务架构下的消息消费方法、装置和存储介质 |
CN117331716A (zh) * | 2023-10-18 | 2024-01-02 | 广州方舟信息科技有限公司 | 一种消息处理方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111404643A (zh) | 一种基于消息队列的数据收发处理方法 | |
EP0950969B1 (en) | Method and system for out-tasking conversions of message attachments | |
US8412997B2 (en) | Method and system for message retransmission and intersystem message delivery | |
CN111030784A (zh) | 一种信息同步方法和装置 | |
CN111371892A (zh) | 高并发分布式消息推送系统及方法 | |
US20110173495A1 (en) | Method and System for Reliable Intersystem Message Notification | |
CN113742107B (zh) | 一种避免消息队列中消息丢失的处理方法及相关设备 | |
CN101075969B (zh) | 一种控制数据传输的方法、装置和一种数据传输系统 | |
CN104579905A (zh) | 消息传递方法和系统及mom服务器、接收端 | |
CN108631955A (zh) | 一种确保消息发送可达的方法、系统和装置 | |
CN109451032A (zh) | 一种消息传递系统 | |
WO2001067263A1 (en) | Messaging system for computers | |
CN113391979A (zh) | 监控数据展示的处理方法、设备、系统及存储介质 | |
CN109286671A (zh) | 物联网环境下订阅通知处理方法、装置、存储介质及设备 | |
CN111124717A (zh) | 消息投递方法、系统及计算机存储介质 | |
CN112751743B (zh) | 消息发送异常的处理方法、消息发送装置和电子设备 | |
EP3026860B1 (en) | Method and system for transmission management of full configuration synchronization between eml-nml | |
CN103929455A (zh) | 包含网络存储设备的异步文件传输系统及其传输方法 | |
CN102970209A (zh) | 一种电子邮件状态更新方法、装置及系统 | |
CN111049730A (zh) | RabbitMQ消息重传及消费方幂等性解决方法 | |
CN107071058A (zh) | 异步数据上传处理方法及系统 | |
EP3710929B1 (en) | Optimized reconciliation in a controller switch network | |
JP6999056B2 (ja) | メッセージ管理装置及びメッセージ管理方法 | |
CN112468386B (zh) | 一种重复消息的处理方法及终端 | |
CN112445864B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200710 |