CN111884769B - 消息同步方法及装置 - Google Patents
消息同步方法及装置 Download PDFInfo
- Publication number
- CN111884769B CN111884769B CN202010782075.5A CN202010782075A CN111884769B CN 111884769 B CN111884769 B CN 111884769B CN 202010782075 A CN202010782075 A CN 202010782075A CN 111884769 B CN111884769 B CN 111884769B
- Authority
- CN
- China
- Prior art keywords
- message
- state information
- database
- messages
- preset value
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000012545 processing Methods 0.000 claims abstract description 87
- 230000002159 abnormal effect Effects 0.000 claims description 28
- 238000004590 computer program Methods 0.000 claims description 16
- 230000008569 process Effects 0.000 abstract description 15
- 230000000903 blocking effect Effects 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 14
- 230000005540 biological transmission Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1809—Selective-repeat protocols
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种消息同步方法及装置,其中该方法包括:在消息生产者发布消息后,记录消息对应的状态信息存入数据库;根据消息消费者对消息的处理数据,确定消息对应的新的状态信息,更新至数据库;循环执行以下步骤,直至数据库中记录的所有消息对应的状态信息为第一预设值:每隔第一预定时间间隔,调取数据库中的状态信息为第二预设值的消息,重新发布;根据消息消费者对重新发布的消息的处理数据,确定重新发布的消息对应的新的状态信息,更新至数据库。该方法可确定所发布消息是否发送成功,以此为依据重新发布,保证了消息可靠性;不占用消息生产者和消息消费者的处理进程,从而减少了消息发送过程中阻塞的发生,进而提高消息处理的吞吐量。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种消息同步方法及装置。
背景技术
随着微服务的流行,数据的分布式存储,导致消息传输的一致性变得愈加复杂。目前分布式系统间,消息传输主要是通过发布订阅消息系统,比如kafka,进行消息同步。
现有的消息同步方式有:(一)发送并忘记:消息生产者发送消息后,不关心是否发送成功。(二)同步发送:消息生产者逐条发送消息给消息消费者;消息生产者获取到消息返回的结果,才继续下一条消息的发送。(三)异步发送:消息生产者发送消息的同时,指定回调函数;消费者处理消息时,调用回调函数;回调函数执行完毕后,消息生产者结束发送。
但是,发送并忘记的方式,消息处理吞吐量大,但无法保证消息的可靠性;而同步发送和异步发送方式,可以保证消息的可靠性,但是消息处理流程复杂,消息发送容易阻塞,消息处理吞吐量较小。
发明内容
本发明实施例提供一种消息同步方法,用以保证消息可靠性的同时,提高消息处理的吞吐量,该方法包括:
在消息生产者发布消息后,记录消息对应的状态信息,将消息和对应的状态信息存入数据库;
根据消息消费者对消息的处理数据,确定消息对应的新的状态信息,将消息对应的新的状态信息,更新至数据库;
循环执行以下步骤,直至数据库中记录的所有消息对应的状态信息为第一预设值:每隔第一预定时间间隔,调取数据库中的状态信息为第二预设值的消息,重新发布;根据消息消费者对重新发布的消息的处理数据,确定重新发布的消息对应的新的状态信息,将重新发布的消息对应的新的状态信息,更新至数据库;状态信息包括:消息的实时状态和重发次数;所述第一预设值为:消息的实时状态为无需重发或重发次数等于预定阈值;所述第二预设值为:消息的实时状态为需重发且重发次数小于预定阈值;
所述消息同步方法还包括:每隔第二预定时间间隔,从数据库中,获取状态信息为第三预设值的消息;所述第三预设值为消息的实时状态为需重发且重发次数等于预定阈值;
将状态信息为第三预设值的消息,批量发布;
根据消息消费者对批量发布的消息的处理数据,确定批量发布的消息对应的新的状态信息,将批量发布的消息对应的新的状态信息,更新至数据库;
所述消息同步方法还包括:将数据库中状态信息为第四预设值的消息及对应的状态信息导出,生成异常消息数据;所述第四预设值为消息的实时状态为需重发且重发次数大于预定阈值;
在数据库中删除状态信息为第四预设值的消息及对应的状态信息。
本发明实施例还提供一种消息同步装置,用以保证消息可靠性的同时,提高消息处理的吞吐量,该装置包括:
消息存储模块,用于在消息生产者发布消息后,记录消息对应的状态信息,将消息和对应的状态信息存入数据库;
第一状态更新模块,用于根据消息消费者对消息的处理数据,确定消息对应的新的状态信息,将消息对应的新的状态信息,更新至数据库;
循环模块,用于调用重发模块和第二状态更新模块,循环执行以下步骤,直至数据库中记录的所有消息对应的状态信息为第一预设值:重发模块,用于每隔第一预定时间间隔,调取数据库中的状态信息为第二预设值的消息,重新发布;第二状态更新模块,用于根据消息消费者对重新发布的消息的处理数据,确定重新发布的消息对应的新的状态信息,将重新发布的消息对应的新的状态信息,更新至数据库;状态信息包括:消息的实时状态和重发次数;所述第一预设值为:消息的实时状态为无需重发或重发次数等于预定阈值;所述第二预设值为:消息的实时状态为需重发且重发次数小于预定阈值;
所述消息同步装置还包括:批量发布模块,用于:
每隔第二预定时间间隔,从数据库中,获取状态信息为第三预设值的消息;所述第三预设值为消息的实时状态为需重发且重发次数等于预定阈值;
将状态信息为第三预设值的消息,批量发布;
根据消息消费者对批量发布的消息的处理数据,确定批量发布的消息对应的新的状态信息,将批量发布的消息对应的新的状态信息,更新至数据库;
所述消息同步装置还包括:异常消息处理模块,用于:
将数据库中状态信息为第四预设值的消息及对应的状态信息导出,生成异常消息数据;所述第四预设值为消息的实时状态为需重发且重发次数大于预定阈值;
在数据库中删除状态信息为第四预设值的消息及对应的状态信息;
状态信息包括:消息的实时状态和重发次数;
所述第一预设值为:消息的实时状态为无需重发或重发次数等于预定阈值;
所述第二预设值为:消息的实时状态为需重发且重发次数小于预定阈值。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述消息同步方法。
本发明实施例也提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述消息同步方法的计算机程序。
本发明实施例中,通过在消息生产者发布消息后,记录消息对应的状态信息,将消息和对应的状态信息存入数据库;根据消息消费者对消息的处理数据,确定消息对应的新的状态信息,将消息对应的新的状态信息,更新至数据库;循环执行以下步骤,直至数据库中记录的所有消息对应的状态信息为第一预设值:每隔第一预定时间间隔,调取数据库中的状态信息为第二预设值的消息,重新发布;根据消息消费者对重新发布的消息的处理数据,确定重新发布的消息对应的新的状态信息,将重新发布的消息对应的新的状态信息,更新至数据库。根据消息消费者对消息生产者所发布消息的处理数据,可确定所发布消息是否发送成功,并更新数据库中的消息对应的状态信息,以此为依据重新发布,保证了消息可靠性;在数据库中,记录消息对应的状态信息,并以此为依据确定每条消息是否需要重新发布,不占用消息生产者和消息消费者的处理进程,从而减少了消息发送过程中阻塞的发生,进而提高消息处理的吞吐量。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中消息同步方法的示意图。
图2为本发明一具体实施例中消息同步方法的示意图。
图3为本发明另一具体实施例中消息同步方法的示意图。
图4为本具体应用实施中的消息同步系统的具体工作时序逻辑图。
图5为本发明实施例中消息同步装置的示意图。
图6为本发明一具体实施例中消息同步装置的示意图。
图7为本发明另一具体实施例中消息同步装置的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种消息同步方法,用以保证消息可靠性的同时,提高消息处理的吞吐量,如图1所示,该方法包括:
步骤101:在消息生产者发布消息后,记录消息对应的状态信息,将消息和对应的状态信息存入数据库;
步骤102:根据消息消费者对消息的处理数据,确定消息对应的新的状态信息,将消息对应的新的状态信息,更新至数据库;
步骤103:循环执行以下步骤104-105,直至数据库中记录的所有消息对应的状态信息为第一预设值:
步骤104:每隔第一预定时间间隔,调取数据库中的状态信息为第二预设值的消息,重新发布;
步骤105:根据消息消费者对重新发布的消息的处理数据,确定重新发布的消息对应的新的状态信息,将重新发布的消息对应的新的状态信息,更新至数据库。
由图1所示流程可以得知,本发明实施例中,通过在消息生产者发布消息后,记录消息对应的状态信息,将消息和对应的状态信息存入数据库;根据消息消费者对消息的处理数据,确定消息对应的新的状态信息,将消息对应的新的状态信息,更新至数据库;循环执行以下步骤,直至数据库中记录的所有消息对应的状态信息为第一预设值:每隔第一预定时间间隔,调取数据库中的状态信息为第二预设值的消息,重新发布;根据消息消费者对重新发布的消息的处理数据,确定重新发布的消息对应的新的状态信息,将重新发布的消息对应的新的状态信息,更新至数据库。根据消息消费者对消息生产者所发布消息的处理数据,可确定所发布消息是否发送成功,并更新数据库中的消息对应的状态信息,以此为依据重新发布,保证了消息可靠性;在数据库中,记录消息对应的状态信息,并以此为依据确定每条消息是否需要重新发布,不占用消息生产者和消息消费者的处理进程,从而减少了消息发送过程中阻塞的发生,进而提高消息处理的吞吐量。
具体实施时,首先在消息生产者发布消息后,记录消息对应的状态信息,将消息和对应的状态信息存入数据库。其中,状态信息包括:消息的实时状态和重发次数,消息的实时状态是对消息发送后的状态的记录,例如可以是消息已发送(待消息消费者处理)、无需重发(消息消费者已处理)、需重发(消息已发送但消息消费者未处理)等状态。重发次数是指消息生产者对该条消息已经重复发送的次数。
将消息和对应的状态信息存入数据库后,接收消息消费者对消息的处理结果,根据消息消费者对消息的处理结果,确定消息对应的新的状态信息,将消息对应的新的状态信息,更新至数据库。具体实施时,消息消费者反馈了对消息的处理结果,消息消费者已经接收消息并处理,则消息对应的新的状态信息为:实时状态为无需重发;消息消费者未反馈对消息的处理结果或反馈消息消费者未接收到消息等,消息消费者未处理消息,则消息对应的新的状态信息为:实时状态为需重发。
将消息对应的新的状态信息,更新至数据库后,循环执行以下步骤,直至数据库中记录的所有消息对应的状态信息为第一预设值:
每隔第一预定时间间隔,调取数据库中的状态信息为第二预设值的消息,重新发布;
根据消息消费者对重新发布的消息的处理数据,确定重新发布的消息对应的新的状态信息,将重新发布的消息对应的新的状态信息,更新至数据库。
其中,第一预设值为:消息的实时状态为无需重发或重发次数等于预定阈值。预定阈值是指预先设定的消息可重发的最大次数,例如可以取50、100等,可根据实际需要进行设置。第二预设值为:消息的实时状态为需重发且重发次数小于预定阈值。第一预定时间间隔是预定的重发时间间隔,例如可以是5分钟、10分钟或30分钟,根据消息处理的速度来设置时长,略大于消息生产者发送消息至消息消费者反馈消息处理结果的时长即可。
只要消息需要重发且重发次数小于预定阈值,重新发送消息并记录重发后的状态信息,更新至数据库,直至消息无需重发或消息的重发次数等于设定的预定阈值。具体实施时,根据消息消费者对重新发布的消息的处理数据,确定重新发布的消息对应的新的状态信息,将重新发布的消息对应的新的状态信息,更新至数据库,包括:在重新发布消息后,将重新发布的消息对应的重发次数加一,更新至数据库。
由于消息的重发次数等于设定的预定阈值时,将结束重新发送的循环,但此种情况下的消息并未被消息消费者处理,但重发次数已经达到阈值,为了避免一直重发,浪费资源,本发明一具体实施例还提供一种消息同步方法,如图2所示,在图1的基础上还包括:
步骤201:每隔第二预定时间间隔,从数据库中,获取状态信息为第三预设值的消息;
步骤202:将状态信息为第三预设值的消息,批量发布;
步骤203:根据消息消费者对批量发布的消息的处理数据,确定批量发布的消息对应的新的状态信息,将批量发布的消息对应的新的状态信息,更新至数据库。
其中,第三预设值为消息的实时状态为需重发且重发次数等于预定阈值。
其中,第二预定时间间隔为预先设定的批量发送的时间间隔,为了避免资源浪费,可根据实际需要,统计状态信息为第三预设值的消息数量达到一定数量所用的平均时长,将此平均时长设置为第二预定时间间隔。
步骤203具体实施时,包括:在批量发布消息后,将批量发布的消息对应的重发次数加一,更新至数据库。
由于批量发送后仍然存在未被消息消费者处理的消息,本发明另一具体实施例还提供一种消息同步方法,如图3所示,在图2的基础上还包括:
步骤301:将数据库中状态信息为第四预设值的消息及对应的状态信息导出,生成异常消息数据;
步骤302:在数据库中删除状态信息为第四预设值的消息及对应的状态信息。
其中,第四预设值为消息的实时状态为需重发且重发次数大于预定阈值。
具体实施时,可以将生成的异常消息数据提供给业务操作人员,业务操作人员查明可根据生成的异常消息数据,排查一直未被消息消费者处理的原因,后续根据排查出的出错原因,调整消息提供给消息生产者重新发送,或业务操作人员手工重新发送,以使达到所有消息同步的目的。
下面给出一具体实例说明本发明实施例如何进行消息同步。本例为应用本发明实施例提供的消息同步方法所开发的消息同步系统。
本具体应用实施,提供一种基于发布订阅消息子系统、数据库和批量程序的消息同步系统,在本地数据库中,记录消息内容、消息状态以及消息是否为异常消息。如果消息发送失败,可以通过批量程序,轮询本地数据库获取同步失败的消息列表,对其进行重发,若重发多次仍然发送失败,进行批量文本补处理以及异常消息标注处理,以实现通信双方消息的一致性。其中,发布订阅是一种消息范式,发布订阅消息子系统有消息生产者、消息消费者和主题等,消息生产者发布消息到指定主题的分区,该主题可以被多个消息消费者订阅。
消息同步系统加入了本地消息记录和补偿机制,消息同步系统会在本地数据库中记录消息内容、消息结果和是否为异常消息的标识。
消息生产者发送消息后,在本地数据库存储消息,此时消息同步系统无需依赖消息处理结果即可处理下一条消息,消息消费者处理过消息后将返回处理结果,消息同步系统会将处理结果更新到数据库中。
如果未收到消息处理结果,批量重发程序会定时轮询数据库,对发送失败的消息进行重发N次的处理。
如果重发N次还未成功,批量文本补处理程序会将此类消息生成待处理文本,发送给消息消费者。消息消费者处理后再以文本的方式返回给消息生产者,消息生产者根据返回的文本内容更新数据库中消息对应的状态信息。
如果返回的文本中,还有处理失败的消息,此时可以设定这部分消息是异常消息,需要在数据库中将这些消息标注为异常消息,在数据库中删除异常消息对应的数据内容。使得批量文本补处理程序在后续生成待处理文本时会过滤掉这些异常消息,降低异常消息对系统资源不必要的占用,并将这些异常消息生成异常信息文本,方便人工排查处理。这样同时保证了消息的吞吐量和可靠性,并可以排除异常消息的干扰。
如图4所示,为本具体应用实施中的消息同步系统的具体工作时序逻辑图,包括:
1.1、消息生成模块(生产者):生成和发布消息,并写入数据库消息状态表。
1.2、消息处理模块(消费者):读取并处理消息,处理后反馈处理结果消息给生产者。
1.3、消息处理模块(生产者):读取并处理反馈消息,更新数据库消息状态表。
2.1、消息补偿模块(生产者):轮询数据库中处理失败且重发次数小于N的记录,重新发送N次,并更新数据库中该记录的重发次数。
2.2、消息处理模块(消费者):读取并处理消息。处理后反馈处理结果消息。
2.3、消息处理模块(生产者):读取并处理反馈消息,更新数据库消息状态表。
3.1、消息补偿模块(生产者):轮询数据库处理失败且重发次数大于等于N的非异常消息,生成待处理文本,并发送给消费者。
3.2、消息批量核对模块(消费者):获取和处理生产者提供的待处理文本,附上每条消息的处理结果生成新文本,之后将新文本发送给生产者。
3.3、消息批量处理模块(生产者):获取消费者提供的新文本,将新文本中消息的处理状态更新到数据库、标注出异常消息,并生成异常消息文本。
上述具体应用的实施仅为举例,其余实施方式不再一一赘述。
基于同一发明构思,本发明实施例还提供一种消息同步装置,由于消息同步装置所解决问题的原理与消息同步方法相似,因此消息同步装置的实施可以参见消息同步方法的实施,重复之处不再赘述,具体结构如图5所示:
消息存储模块501,用于在消息生产者发布消息后,记录消息对应的状态信息,将消息和对应的状态信息存入数据库;
第一状态更新模块502,用于根据消息消费者对消息的处理数据,确定消息对应的新的状态信息,将消息对应的新的状态信息,更新至数据库;
循环模块503,用于调用重发模块504和第二状态更新模块505,循环执行以下步骤,直至数据库中记录的所有消息对应的状态信息为第一预设值:
重发模块504,用于每隔第一预定时间间隔,调取数据库中的状态信息为第二预设值的消息,重新发布;
第二状态更新模块505,用于根据消息消费者对重新发布的消息的处理数据,确定重新发布的消息对应的新的状态信息,将重新发布的消息对应的新的状态信息,更新至数据库。
具体实施时,消息的状态信息包括:消息的实时状态和重发次数;第一预设值为:消息的实时状态为无需重发或重发次数等于预定阈值;第二预设值为:消息的实时状态为需重发且重发次数小于预定阈值。
具体实施例中,重发模块504具体用于:
在重新发布消息后,将重新发布的消息对应的重发次数加一,更新至数据库。
本发明一具体实施例中,还提供一种消息同步装置,如图6所示,在图5的基础上还包括:
批量发布模块601,用于:
每隔第二预定时间间隔,从数据库中,获取状态信息为第三预设值的消息;其中,第三预设值为消息的实时状态为需重发且重发次数等于预定阈值;
将状态信息为第三预设值的消息,批量发布;
根据消息消费者对批量发布的消息的处理数据,确定批量发布的消息对应的新的状态信息,将批量发布的消息对应的新的状态信息,更新至数据库
具体实施时,批量发布模块601具体用于:在批量发布消息后,将批量发布的消息对应的重发次数加一,更新至数据库。
本发明另一具体实施例中,还提供一种消息同步装置,如图7所示,在图6的基础上还包括:异常消息处理模块701,用于:
将数据库中状态信息为第四预设值的消息及对应的状态信息导出,生成异常消息数据;其中,第四预设值为消息的实时状态为需重发且重发次数大于预定阈值;
在数据库中删除状态信息为第四预设值的消息及对应的状态信息。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述消息同步方法。
本发明实施例还提供一种计算机可读存储介质,存储有执行上述消息同步方方法的计算机程序。
综上所述,本发明实施例提供的消息同步方方法及装置具有如下优点:
通过在消息生产者发布消息后,记录消息对应的状态信息,将消息和对应的状态信息存入数据库;根据消息消费者对消息的处理数据,确定消息对应的新的状态信息,将消息对应的新的状态信息,更新至数据库;循环执行以下步骤,直至数据库中记录的所有消息对应的状态信息为第一预设值:每隔第一预定时间间隔,调取数据库中的状态信息为第二预设值的消息,重新发布;根据消息消费者对重新发布的消息的处理数据,确定重新发布的消息对应的新的状态信息,将重新发布的消息对应的新的状态信息,更新至数据库。根据消息消费者对消息生产者所发布消息的处理数据,可确定所发布消息是否发送成功,并更新数据库中的消息对应的状态信息,以此为依据重新发布,保证了消息可靠性;在数据库中,记录消息对应的状态信息,并以此为依据确定每条消息是否需要重新发布,不占用消息生产者和消息消费者的处理进程,从而减少了消息发送过程中阻塞的发生,进而提高消息处理的吞吐量。重发次数达到预定阈值后,批量发送未被成功处理的消息,若消息仍然未成功被成功处理,将此部分的消息标记为异常消息,并导出生成异常消息数据提供给业务操作人员,使得后续重发或批量发送时,过滤掉这些异常消息,降低异常消息对系统资源不必要的占用,并将这些异常消息生成异常信息文本,方便人工排查处理。这样同时保证了消息的吞吐量和可靠性,并排除异常消息的干扰。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种消息同步方法,其特征在于,包括:
在消息生产者发布消息后,记录消息对应的状态信息,将消息和对应的状态信息存入数据库;
根据消息消费者对消息的处理数据,确定消息对应的新的状态信息,将消息对应的新的状态信息,更新至数据库;
循环执行以下步骤,直至数据库中记录的所有消息对应的状态信息为第一预设值:每隔第一预定时间间隔,调取数据库中的状态信息为第二预设值的消息,重新发布;根据消息消费者对重新发布的消息的处理数据,确定重新发布的消息对应的新的状态信息,将重新发布的消息对应的新的状态信息,更新至数据库;状态信息包括:消息的实时状态和重发次数;所述第一预设值为:消息的实时状态为无需重发或重发次数等于预定阈值;所述第二预设值为:消息的实时状态为需重发且重发次数小于预定阈值;
所述消息同步方法还包括:每隔第二预定时间间隔,从数据库中,获取状态信息为第三预设值的消息;所述第三预设值为消息的实时状态为需重发且重发次数等于预定阈值;
将状态信息为第三预设值的消息,批量发布;
根据消息消费者对批量发布的消息的处理数据,确定批量发布的消息对应的新的状态信息,将批量发布的消息对应的新的状态信息,更新至数据库;
所述消息同步方法还包括:将数据库中状态信息为第四预设值的消息及对应的状态信息导出,生成异常消息数据;所述第四预设值为消息的实时状态为需重发且重发次数大于预定阈值;
在数据库中删除状态信息为第四预设值的消息及对应的状态信息。
2.如权利要求1所述的方法,其特征在于,根据消息消费者对重新发布的消息的处理数据,确定重新发布的消息对应的新的状态信息新发布的消息对应的新的状态信息,更新至数据库,包括:
在重新发布消息后,将重新发布的消息对应的重发次数加一,更新至数据库。
3.如权利要求1所述的方法,其特征在于,根据消息消费者对批量发布的消息的处理数据,确定批量发布的消息对应的新的状态信息,将批量发布的消息对应的新的状态信息,更新至数据库,包括:
在批量发布消息后,将批量发布的消息对应的重发次数加一,更新至数据库。
4.一种消息同步装置,其特征在于,包括:
消息存储模块,用于在消息生产者发布消息后,记录消息对应的状态信息,将消息和对应的状态信息存入数据库;
第一状态更新模块,用于根据消息消费者对消息的处理数据,确定消息对应的新的状态信息,将消息对应的新的状态信息,更新至数据库;
循环模块,用于调用重发模块和第二状态更新模块,循环执行以下步骤,直至数据库中记录的所有消息对应的状态信息为第一预设值:重发模块,用于每隔第一预定时间间隔,调取数据库中的状态信息为第二预设值的消息,重新发布;第二状态更新模块,用于根据消息消费者对重新发布的消息的处理数据,确定重新发布的消息对应的新的状态信息,将重新发布的消息对应的新的状态信息,更新至数据库;状态信息包括:消息的实时状态和重发次数;所述第一预设值为:消息的实时状态为无需重发或重发次数等于预定阈值;所述第二预设值为:消息的实时状态为需重发且重发次数小于预定阈值;
所述消息同步装置还包括:批量发布模块,用于:
每隔第二预定时间间隔,从数据库中,获取状态信息为第三预设值的消息;所述第三预设值为消息的实时状态为需重发且重发次数等于预定阈值;
将状态信息为第三预设值的消息,批量发布;
根据消息消费者对批量发布的消息的处理数据,确定批量发布的消息对应的新的状态信息,将批量发布的消息对应的新的状态信息,更新至数据库;
所述消息同步装置还包括:异常消息处理模块,用于:
将数据库中状态信息为第四预设值的消息及对应的状态信息导出,生成异常消息数据;所述第四预设值为消息的实时状态为需重发且重发次数大于预定阈值;
在数据库中删除状态信息为第四预设值的消息及对应的状态信息。
5.如权利要求4所述的装置,其特征在于,所述重发模块具体用于:
在重新发布消息后,将重新发布的消息对应的重发次数加一,更新至数据库。
6.如权利要求4所述的装置,其特征在于,所述批量发布模块具体用于:
在批量发布消息后,将批量发布的消息对应的重发次数加一,更新至数据库。
7.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至3任一所述方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至3任一所述方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010782075.5A CN111884769B (zh) | 2020-08-06 | 2020-08-06 | 消息同步方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010782075.5A CN111884769B (zh) | 2020-08-06 | 2020-08-06 | 消息同步方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111884769A CN111884769A (zh) | 2020-11-03 |
CN111884769B true CN111884769B (zh) | 2023-10-27 |
Family
ID=73210274
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010782075.5A Active CN111884769B (zh) | 2020-08-06 | 2020-08-06 | 消息同步方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111884769B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112328418B (zh) * | 2020-11-27 | 2022-08-16 | 行吟信息科技(上海)有限公司 | 一种提升mq同步可靠性的方法和系统 |
CN112631808B (zh) * | 2020-12-29 | 2024-06-14 | 上海众源网络有限公司 | 数据同步方法、装置、电子设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105512244A (zh) * | 2015-11-30 | 2016-04-20 | 北京京东尚科信息技术有限公司 | 基于消息队列实现数据库事务处理的方法及装置 |
CN110941502A (zh) * | 2019-12-16 | 2020-03-31 | 广州市百果园信息技术有限公司 | 消息处理方法、装置、存储介质及设备 |
CN111367628A (zh) * | 2020-03-05 | 2020-07-03 | 中国银行股份有限公司 | 分布式事务的处理方法、装置及消息生产方、消费方系统 |
CN111404643A (zh) * | 2020-03-10 | 2020-07-10 | 山东汇贸电子口岸有限公司 | 一种基于消息队列的数据收发处理方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100030818A1 (en) * | 2008-07-31 | 2010-02-04 | Yahoo! Inc. | System and method for applying once a transaction delivered in a message published asynchronously in a distributed database |
-
2020
- 2020-08-06 CN CN202010782075.5A patent/CN111884769B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105512244A (zh) * | 2015-11-30 | 2016-04-20 | 北京京东尚科信息技术有限公司 | 基于消息队列实现数据库事务处理的方法及装置 |
CN110941502A (zh) * | 2019-12-16 | 2020-03-31 | 广州市百果园信息技术有限公司 | 消息处理方法、装置、存储介质及设备 |
CN111367628A (zh) * | 2020-03-05 | 2020-07-03 | 中国银行股份有限公司 | 分布式事务的处理方法、装置及消息生产方、消费方系统 |
CN111404643A (zh) * | 2020-03-10 | 2020-07-10 | 山东汇贸电子口岸有限公司 | 一种基于消息队列的数据收发处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111884769A (zh) | 2020-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111884769B (zh) | 消息同步方法及装置 | |
JP2006190265A (ja) | サーバー待ち行列システムおよび方法 | |
CN111143093B (zh) | 异步消息分布式处理方法、装置、设备及存储介质 | |
CN108089915B (zh) | 基于消息队列的业务控件化处理的方法及系统 | |
CN111158933A (zh) | 一种基于消息队列的分布式事务处理方法及系统 | |
CN113703954A (zh) | 一种消息备份方法、装置、电子设备及计算机存储介质 | |
CN107688503A (zh) | 一种基于ActiveMQ数据总线的消息处理方法、装置及电子设备 | |
CN112887196A (zh) | 消息发送方法、系统、装置、设备及可读存储介质 | |
CN104767589B (zh) | 一种信息发送方法及装置 | |
CN109408251B (zh) | 消息发送方法与装置、消息接收处理方法与装置 | |
CN108959657A (zh) | 一种数据变更处理方法及装置 | |
CN107231284B (zh) | 一种消息的发送方法和终端设备 | |
US20200236165A1 (en) | System and method for synchronization of media objects between devices operating in a multiroom system | |
CN116643900A (zh) | 消息队列的重发方法及装置、电子设备及存储介质 | |
CN114338584B (zh) | 消息撤回方法和消息传输系统 | |
CN109587202B (zh) | 文件校验和数据处理之间的协同处理方法、装置及系统 | |
CN108880994B (zh) | 一种重发邮件的方法和装置 | |
CN111478941B (zh) | Mock自动化运行方法、装置、计算机设备及存储介质 | |
CN110213322B (zh) | 用于社区的内容发布处理方法、客户端、服务器 | |
CN111131001A (zh) | 消息发送方法、装置、存储介质及服务器 | |
CN103503358A (zh) | 一种群组资源交互消息的方法及其装置 | |
CN112732660A (zh) | 干预式文件传输方法、装置及系统 | |
CN116384956B (zh) | 一种消息批量发送方法、装置、设备和存储介质 | |
CN115348229B (zh) | 消息撤回方法及装置 | |
CN117917652B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |