CN111143093A - 异步消息分布式处理方法、装置、设备及存储介质 - Google Patents
异步消息分布式处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111143093A CN111143093A CN201911423622.4A CN201911423622A CN111143093A CN 111143093 A CN111143093 A CN 111143093A CN 201911423622 A CN201911423622 A CN 201911423622A CN 111143093 A CN111143093 A CN 111143093A
- Authority
- CN
- China
- Prior art keywords
- message
- data table
- processing
- target data
- queue
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 29
- 238000003860 storage Methods 0.000 title claims abstract description 16
- 238000012545 processing Methods 0.000 claims abstract description 118
- 230000005540 biological transmission Effects 0.000 claims abstract description 25
- 238000004590 computer program Methods 0.000 claims description 18
- 238000004519 manufacturing process Methods 0.000 claims description 11
- 238000000034 method Methods 0.000 description 30
- 238000010586 diagram Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 13
- 230000006870 function Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000005201 scrubbing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
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
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Retry When Errors Occur (AREA)
Abstract
本说明书实施例提供了一种异步消息分布式处理方法、装置、设备及存储介质。该异步消息分布式处理方法包括:利用消息传递线程池中的线程,将目标数据表中状态为待处理的消息批量写入目标内存队列;利用消息消费线程池中的线程,对所述目标内存队列中的消息进行处理,并根据处理结果更新所述目标数据表。本说明书实施例可以提高异步消息处理的适用范围,降低异步消息处理的实现成本。
Description
技术领域
本说明书涉及分布式技术领域,尤其是涉及一种异步消息分布式处理方法、装置、设备及存储介质。
背景技术
当前,分布式系统中的异步场景越来越多,且大多数异步消息是通过消息队列进行存储和传输的。对于这些消息队列中的异步消息,各应用系统一般利用专用的异步消息处理方案进行处理。这些专用的异步消息处理方案,一般是在开源框架(例如ELastic-job等)的基础上,针对特定的并发场景进行二次开发(包括进行大量的个性化编程)而成。由于是针对特定的并发场景进行二次开发的,这些异步消息处理方案只能应用于特定的并发场景,从而导致其实现成本很高、适用范围较窄。
发明内容
本说明书实施例的目的在于提供一种异步消息分布式处理方法、装置、设备及存储介质,以提高异步消息处理的适用范围,降低异步消息处理的实现成本。
为达到上述目的,一方面,本说明书实施例提供了一种异步消息分布式处理方法,包括:
利用消息传递线程池中的线程,将目标数据表中状态为待处理的消息批量写入目标内存队列;
利用消息消费线程池中的线程,对所述目标内存队列中的消息进行处理,并根据处理结果更新所述目标数据表。
在本说明书的实施例中,在所述将目标数据表中状态为待处理的消息批量写入目标内存队列之前,还包括:
利用消息生产线程池中的线程,将消息接收队列中的消息写入目标数据表,并将其状态标记为待处理。
在本说明书的实施例中,所述将消息接收队列中的消息写入目标数据表,包括:
从消息接收队列中读取消息;
确认所述消息是否携带入库标识;
当所述消息携带入库标识时,将其写入所述目标数据表。
在本说明书的实施例中,所述将消息接收队列中的消息写入目标数据表,还包括:
当所述消息未携带入库标识时,将其写入所述目标内存队列。
在本说明书的实施例中,还包括:
根据业务并发量动态配置所述消息传递线程池的线程数量。
在本说明书的实施例中,所述对所述目标内存队列中的消息进行处理,包括:
远程调用应用对所述目标内存队列中的消息进行业务逻辑处理。
在本说明书的实施例中,所述对所述目标内存队列中的消息进行处理,包括:
将所述目标内存队列中的消息写入消息将所述目标内存队列中的消息写入消息发送队列。
在本说明书的实施例中,在将所述目标数据表中状态为待处理的消息批量写入目标内存队列之后,还包括:
在所述目标数据表中,将被写入至所述目标内存队列的消息的状态标记为加载状态;
对所述消息为加载状态的持续时间进行计时,当所述持续时间超出超时时长时,在所述目标数据表中将所述消息的状态标记为待处理。
在本说明书的实施例中,所述根据处理结果更新目标数据表,包括以下中的任意一种:
当消息处理成功时,在所述目标数据表中将所述消息的状态标记为处理成功;
当消息处理失败时,将所述消息从所述目标数据表迁移至指定数据表;所述处理失败包括达到预设重试次数后的处理失败。
另一方面,本说明书实施例还提供了一种异步消息分布式处理装置,包括:
消息传递模块,用于利用消息传递线程池中的线程,将目标数据表中状态为待处理的消息批量写入目标内存队列;
消息消费模块,用于利用消息消费线程池中的线程,对所述目标内存队列中的消息进行处理,并根据处理结果更新所述目标数据表。
在本说明书的实施例中,所述异步消息分布式处理装置还包括:
消息生产模块,用于利用消息生产线程池中的线程,将消息接收队列中的消息写入目标数据表,并将其状态标记为待处理。
在本说明书的实施例中,所述将消息接收队列中的消息写入目标数据表,包括:
从消息接收队列中读取消息;
确认所述消息是否携带入库标识;
当所述消息携带入库标识时,将其写入所述目标数据表。
在本说明书的实施例中,所述将消息接收队列中的消息写入目标数据表,还包括:
当所述消息未携带入库标识时,将其写入所述目标内存队列。
在本说明书的实施例中,所述异步消息分布式处理装置还包括:
动态配置模块,用于根据业务并发量动态配置所述消息传递线程池的线程数量。
在本说明书的实施例中,所述对所述目标内存队列中的消息进行处理,包括:
远程调用应用对所述目标内存队列中的消息进行业务逻辑处理。
在本说明书的实施例中,所述对所述目标内存队列中的消息进行处理,包括:
将所述目标内存队列中的消息写入消息将所述目标内存队列中的消息写入消息发送队列。
在本说明书的实施例中,所述消息传递模块还用于:
在所述目标数据表中,将被写入至所述目标内存队列的消息的状态标记为加载状态;
对所述消息为加载状态的持续时间进行计时,当所述持续时间超出超时时长时,在所述目标数据表中将所述消息的状态标记为待处理。
在本说明书的实施例中,所述根据处理结果更新目标数据表,包括以下中的任意一种:
当消息处理成功时,在所述目标数据表中将所述消息的状态标记为处理成功;
当消息处理失败时,将所述消息从所述目标数据表迁移至指定数据表;所述处理失败包括达到预设重试次数后的处理失败。
另一方面,本说明书实施例还提供了一种计算机设备,包括存储器、处理器、以及存储在所述存储器上的计算机程序,所述计算机程序被所述处理器运行时执行上述的异步消息分布式处理方法。
另一方面,本说明书实施例还提供了一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的异步消息分布式处理方法。
由以上本说明书实施例提供的技术方案可见,本说明书实施例将消息传递和消息消费的步骤进行了分解,并为每个处理步骤配置了相应的异步处理线程池。当需要调整并发场景时,可以通过适应性调整异步处理线程池中的线程数量来实现,而无需进行二次开发。因此,可以满足不同并发场景下对高效处理的要求,从而提高了异步消息处理的适用范围,降低了异步消息处理的实现成本。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本说明书一些实施例中异步消息分布式发送处理的方法流程图;
图2为本说明书另一些实施例中异步消息分布式发送处理示意图;
图3为本说明书一些实施例中异步消息分布式接收处理的方法流程图;
图4为本说明书另一些实施例中异步消息分布式接收处理示意图;
图5为本说明书一实施例中参数配置示意图;
图6为本说明书一些实施例中异步消息分布式处理装置的结构框图;
图7为本说明书另一些实施例中异步消息分布式处理装置的结构框图;
图8为本说明书一些实施例中计算机设备的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。
本说明书实施例的异步消息分布式处理可以分为:异步消息分布式发送处理及异步消息分布式接收处理。为便于理解,以下分别进行举例说明。
参考图1和图2所示,本说明书一些实施例的异步消息分布式发送处理方法可以包括以下步骤:
S101、利用消息传递线程池中的线程,将目标数据表中状态为待处理的消息批量写入目标内存队列。
S102、利用消息消费线程池中的线程,将所述目标内存队列中的消息写入消息发送队列,并根据处理结果更新所述目标数据表。
由此可见,本说明书实施例将消息传递和消息消费的步骤进行了分解,并为每个处理步骤配置了相应的异步处理线程池。当需要调整并发场景时,可以通过适应性调整异步处理线程池中的线程数量来实现,而无需进行二次开发。因此,可以满足不同并发场景下对高效处理的要求,从而提高了异步消息处理的适用范围,降低了异步消息处理的实现成本。
在本说明书一些实施例中,当消息发送队列有多个时,可以为每个消息发送队列建立各自的线程池、数据表和内存队列。同一个消息传递线程池中不同线程针对同一个数据表中的数据,可以写入到同一个内存队列中;同一个消息消费线程池中不同线程针对同一个内存队列中的数据,可以写入同一个消息发送队列。
例如,在下表1所示的示例性实施例中,消息传递线程池P11的各个线程可以将数据表T1中的消息写入到内存队列M1中;消息消费线程池P12的各个线程,可以将内存队列M1中的消息写入消息发送队列Q1。消息传递线程池P21的各个线程可以将数据表T2中的消息写入到内存队列M2中;消息消费线程池P22的各个线程,可以将内存队列M2中的消息写入消息发送队列Q2。消息传递线程池P31的各个线程可以将数据表T3中的消息写入到内存队列M3中;消息消费线程池P32的各个线程,可以将内存队列M3中的消息写入消息发送队列Q3。
表1
在本说明书一些实施例中,数据表中的各条消息记录有相应的处理状态,且其处理状态可变化。例如,在一些示例性实施例中,所述处理状态可以包括待处理(比如可以用NEW标记),加载状态(比如可以用LOAD_DB标记)、处理成功(比如可以用SUCCEED标记)和处理失败(比如可以用FAILED标记)。因此,当利用消息传递线程池中的线程,将目标数据表中状态为待处理的消息批量写入目标内存队列后,可以在目标数据表中,将被写入至目标内存队列中这些消息的状态标记为加载状态,并还可以对这些消息为加载状态的持续时间进行计时,当所述持续时间超出超时时长时,可以在所述目标数据表中将所述消息的状态重新标记为待处理。如此,可以实现对这些消息的容错处理,从而有利于提高异步消息处理的健壮性。
在本说明书一些实施例中,为了防止消息被重复处理,在利用消息传递线程池中的线程,将目标数据表中状态为待处理的消息批量写入目标内存队列时,可以采用数据库锁机制。即在从目标数据表中批量读取状态为待处理的消息时,可以在目标数据表中对这些待处理的消息进行加锁(直到这些待处理的消息的状态发生了变化,例如从待处理状态变为加载状态、处理成功或处理失败等),一旦消息传递线程池中的某个线程对这些待处理的消息进行了加锁,其他的线程则不能对再对这些待处理的消息进行读写操作。
在本说明书一些实施例中,将目标内存队列中的消息写入消息发送队列,可以供应用(service)推送,应用不需要了解异步消息的处理过程和架构设计,只需对消息发送队列中的消息进行推送即可,从而实现对应用屏蔽消息中间件。根据应用反馈的发送结果,当消息发送成功时,消息消费线程池中的线程可以在所述目标数据表中将所述消息的状态标记为处理成功;当消息发送失败时,消息消费线程池中的线程可以将所述消息从所述目标数据表迁移至指定数据表,以备后续查询;如此,有利于维护事务的一致性。此外,当消息发送失败时,还可以将发送失败的消息也写入文件中,从而可以实现可追溯的双保险。
在本说明书一些实施例中,根据业务并发量还可以动态配置消息传递线程池的线程数量,以实现在无需重启系统就可以满足对应并发场景的需要。例如,在一示例性实施例中,当业务的并发量大增(或预计并发量会大增)时,可以通过动态配置的方式增加消息传递线程池的线程数量,从而满足高并发场景下对高效处理的要求。
参考图3和图4所示,本说明书一些实施例的异步消息分布式接收处理方法可以包括以下步骤:
S301、利用消息生产线程池中的线程,将消息接收队列中的消息写入目标数据表,并将其状态标记为待处理。
S302、利用消息传递线程池中的线程,将所述目标数据表中状态为待处理的消息批量写入目标内存队列。
S303、利用消息消费线程池中的线程,远程调用应用对所述目标内存队列中的消息进行业务逻辑处理,并根据处理结果更新所述目标数据表。
在本说明书一些实施例中,在服务启动时可以根据连接参数建立消息接收队列连接,数据库联接。在此基础上,可以利用消息生产线程池中的线程,从目标消息接收队列中读取信息,并写入目标数据表中。
同样,当消息接收队列有多个时,可以为每个消息接收队列建立各自的线程池、数据表和内存队列。同一个消息生产线线程池中不同线程针对同一个消息接收队列的消息,可以写入到同一个数据表中。同一个消息传递线程池中不同线程针对同一个数据表中的消息,可以写入到同一个内存队列中。同一个消息消费线程池中不同线程可以处理同一个内存队列中的消息。
例如,在下表2所示的示例性实施例中,消息生产线程池P11的各个线程可以将消息接收队列Q1中的消息写入到数据表T1中;消息传递线程池P12的各个线程,可以将数据表T1中的消息写入到内存队列M1中,消息消费线程池P13的各个线程,可以处理内存队列M1中的消息。消息生产线程池P21的各个线程可以将消息接收队列Q2中的消息写入到数据表T2中;消息传递线程池P22的各个线程,可以将数据表T2中的消息写入到内存队列M2中,消息消费线程池P23的各个线程,可以处理内存队列M2中的消息。消息生产线程池P31的各个线程可以将消息接收队列Q3中的消息写入到数据表T3中;消息传递线程池P32的各个线程,可以将数据表T3中的消息写入到内存队列M3中,消息消费线程池P33的各个线程,可以处理内存队列M3中的消息。
表2
在本说明书一些实施例中,如果一些消息可以通过应用等进行重发,则这些消息可以不需要落地数据库保存,即消息生产线程池可以直接从消息接收队列中将其读入对应的内存队列。为了便于识别消息接收队列中的消息是否需要落地数据库,消息接收队列中的消息可以携带有入库标识。相应的,所述将消息接收队列中的消息写入目标数据表,可以包括:从消息接收队列中读取消息;确认所述消息是否携带入库标识;当所述消息携带入库标识时,可以将其写入所述目标数据表;否则,可以将其写入目标内存队列。
在本说明书一些实施例中,消息消费线程池中的线程,可以远程调用应用对目标内存队列中的消息进行业务逻辑处理,并根据处理结果更新所述目标数据表。这样应用不需要了解异步消息的处理过程和架构设计,从而实现了对应用屏蔽消息中间件,即应用只需要关注于信息处理业务逻辑即可,从而简化了系统开发。此外,根据应用反馈的处理结果,当消息处理成功时,消息消费线程池中的线程可以在所述目标数据表中将所述消息的状态标记为处理成功;当消息处理失败时,消息消费线程池中的线程可以将所述消息从所述目标数据表迁移至指定数据表,以备后续查询;如此,有利于维护事务的一致性。此外,当消息处理失败时,还可以将处理失败的消息写入文件中,从而可以实现可追溯的双保险。
在上述实施例的异步消息分布式发送处理方法,以及异步消息分布式接收处理方法中,每个步骤都可以参数化,以便于提供灵活订制的功能,从而为不同的使用者提供强大的支撑,满足各种场景需求(例如延迟发送等场景)。此外,本说明书实施例支持以参数文件或者数据库表文件等方式定义参数。例如,可以定义消息中间件(即消息队列)连接参数,可支持多种消息中间件;可以定义消息接收、发送队列与数据表之间的关系;可以定义每个消息接收、发送队列的线程池参数;还可以定义重试参数、延迟参数、数据清理参数等等。在一示例性实施例中,参数配置可以如图5所示。
在上述实施例的异步消息分布式发送处理方法,以及异步消息分布式接收处理方法中,数据表可以包括消息接收数据表(例如可以用AL_XXX_IN进行标识)和消息发送数据表(例如可以用AL_XXX_OUT进行标识)。此外,数据表还可以包括存储最终失败(即达到重试次数后仍然失败)的数据。例如,可以用数据表AL_XXX_IN_EXP保存最终接收失败的消息;可以用AL_XXX_OUT_EXP保存最终发送失败的消息。在本说明书一些实施例的数据表中,主键位可以为分布式uuid(Universally Unique Identifier,通用位移识别码),每条记录可以包含对应的uuid、处理状态、数据以及应用需要额外解析的一些信息。
上述实施例的异步消息分布式发送处理方法,以及异步消息分布式接收处理方法中,还可以包括数据清理步骤,以便于对于超过保留期限的数据进行自动清理。
在上述实施例的异步消息分布式发送处理方法,以及异步消息分布式接收处理方法中,消息发送队列和消息接收队列可以为任何合适的消息中间件。例如,在一些示例性实施例中,所述消息中间件可以包括但不限于rabbitMQ、activeMQ、zeroMQ、rocketMQ和/或kafka等。
参考图6所示,本说明书一些实施例的异步消息分布式发送处理装置可以包括消息传递模块61和消息消费模块62。其中,所述消息传递模块61可以利用消息传递线程池中的线程,将目标数据表中状态为待处理的消息批量写入目标内存队列。所述消息消费模块62可以利用消息消费线程池中的线程,将所述目标内存队列中的消息写入消息发送队列,并根据处理结果更新所述目标数据表。
参考图7所示,本说明书一些实施例的异步消息分布式接收处理装置可以包括消息生产模块70、消息传递模块71和消息消费模块72。其中,所述消息生产模块70可以利用消息生产线程池中的线程,将消息接收队列中的消息写入目标数据表,并将其状态标记为待处理。所述消息传递模块71可以利用消息传递线程池中的线程,将所述目标数据表中状态为待处理的消息批量写入目标内存队列。所述消息消费模块72可以利用消息消费线程池中的线程,远程调用应用对所述目标内存队列中的消息进行业务逻辑处理,并根据处理结果更新所述目标数据表。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
参考图8所示,本说明书一些实施例的计算机设备可以包括存储器、处理器、以及存储在所述存储器上的计算机程序所述计算机程序被所述处理器运行时执行上述实施例的异步消息分布式处理方法。
虽然上文描述的过程流程包括以特定顺序出现的多个操作,但是,应当清楚了解,这些过程可以包括更多或更少的操作,这些操作可以顺序执行或并行执行(例如使用并行处理器或多线程环境)。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘式存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,应包含在本说明书的权利要求范围之内。
Claims (20)
1.一种异步消息分布式处理方法,其特征在于,包括:
利用消息传递线程池中的线程,将目标数据表中状态为待处理的消息批量写入目标内存队列;
利用消息消费线程池中的线程,对所述目标内存队列中的消息进行处理,并根据处理结果更新所述目标数据表。
2.如权利要求1所述的异步消息分布式处理方法,其特征在于,在所述将目标数据表中状态为待处理的消息批量写入目标内存队列之前,还包括:
利用消息生产线程池中的线程,将消息接收队列中的消息写入目标数据表,并将其状态标记为待处理。
3.如权利要求2所述的异步消息分布式处理方法,其特征在于,所述将消息接收队列中的消息写入目标数据表,包括:
从消息接收队列中读取消息;
确认所述消息是否携带入库标识;
当所述消息携带入库标识时,将其写入所述目标数据表。
4.如权利要求3所述的异步消息分布式处理方法,其特征在于,所述将消息接收队列中的消息写入目标数据表,还包括:
当所述消息未携带入库标识时,将其写入所述目标内存队列。
5.如权利要求1所述的异步消息分布式处理方法,其特征在于,还包括:
根据业务并发量动态配置所述消息传递线程池的线程数量。
6.如权利要求1所述的异步消息分布式处理方法,其特征在于,所述对所述目标内存队列中的消息进行处理,包括:
远程调用应用对所述目标内存队列中的消息进行业务逻辑处理。
7.如权利要求1所述的异步消息分布式处理方法,其特征在于,所述对所述目标内存队列中的消息进行处理,包括:
将所述目标内存队列中的消息写入消息将所述目标内存队列中的消息写入消息发送队列。
8.如权利要求1所述的异步消息分布式处理方法,其特征在于,在将所述目标数据表中状态为待处理的消息批量写入目标内存队列之后,还包括:
在所述目标数据表中,将被写入至所述目标内存队列的消息的状态标记为加载状态;
对所述消息为加载状态的持续时间进行计时,当所述持续时间超出超时时长时,在所述目标数据表中将所述消息的状态标记为待处理。
9.如权利要求1所述的异步消息分布式处理方法,其特征在于,所述根据处理结果更新目标数据表,包括以下中的任意一种:
当消息处理成功时,在所述目标数据表中将所述消息的状态标记为处理成功;
当消息处理失败时,将所述消息从所述目标数据表迁移至指定数据表;所述处理失败包括达到预设重试次数后的处理失败。
10.一种异步消息分布式处理装置,其特征在于,包括:
消息传递模块,用于利用消息传递线程池中的线程,将目标数据表中状态为待处理的消息批量写入目标内存队列;
消息消费模块,用于利用消息消费线程池中的线程,对所述目标内存队列中的消息进行处理,并根据处理结果更新所述目标数据表。
11.如权利要求10所述的异步消息分布式处理装置,其特征在于,还包括:
消息生产模块,用于利用消息生产线程池中的线程,将消息接收队列中的消息写入目标数据表,并将其状态标记为待处理。
12.如权利要求11所述的异步消息分布式处理装置,其特征在于,所述将消息接收队列中的消息写入目标数据表,包括:
从消息接收队列中读取消息;
确认所述消息是否携带入库标识;
当所述消息携带入库标识时,将其写入所述目标数据表。
13.如权利要求12所述的异步消息分布式处理装置,其特征在于,所述将消息接收队列中的消息写入目标数据表,还包括:
当所述消息未携带入库标识时,将其写入所述目标内存队列。
14.如权利要求10所述的异步消息分布式处理装置,其特征在于,还包括:
动态配置模块,用于根据业务并发量动态配置所述消息传递线程池的线程数量。
15.如权利要求10所述的异步消息分布式处理装置,其特征在于,所述对所述目标内存队列中的消息进行处理,包括:
远程调用应用对所述目标内存队列中的消息进行业务逻辑处理。
16.如权利要求10所述的异步消息分布式处理装置,其特征在于,所述对所述目标内存队列中的消息进行处理,包括:
将所述目标内存队列中的消息写入消息将所述目标内存队列中的消息写入消息发送队列。
17.如权利要求10所述的异步消息分布式处理装置,其特征在于,所述消息传递模块还用于:
在所述目标数据表中,将被写入至所述目标内存队列的消息的状态标记为加载状态;
对所述消息为加载状态的持续时间进行计时,当所述持续时间超出超时时长时,在所述目标数据表中将所述消息的状态标记为待处理。
18.如权利要求10所述的异步消息分布式处理装置,其特征在于,所述根据处理结果更新目标数据表,包括以下中的任意一种:
当消息处理成功时,在所述目标数据表中将所述消息的状态标记为处理成功;
当消息处理失败时,将所述消息从所述目标数据表迁移至指定数据表;所述处理失败包括达到预设重试次数后的处理失败。
19.一种计算机设备,包括存储器、处理器、以及存储在所述存储器上的计算机程序,其特征在于,所述计算机程序被所述处理器运行时执行权利要求1-9任意一项所述的异步消息分布式处理方法。
20.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-9任意一项所述的异步消息分布式处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911423622.4A CN111143093B (zh) | 2019-12-31 | 2019-12-31 | 异步消息分布式处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911423622.4A CN111143093B (zh) | 2019-12-31 | 2019-12-31 | 异步消息分布式处理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111143093A true CN111143093A (zh) | 2020-05-12 |
CN111143093B CN111143093B (zh) | 2024-04-19 |
Family
ID=70523109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911423622.4A Active CN111143093B (zh) | 2019-12-31 | 2019-12-31 | 异步消息分布式处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111143093B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112084047A (zh) * | 2020-09-14 | 2020-12-15 | 浪潮云信息技术股份公司 | 一种基于异步线程池的消息发送实现方法 |
CN112132685A (zh) * | 2020-09-29 | 2020-12-25 | 中国银行股份有限公司 | 信息处理方法及装置、计算机设备及计算机可读存储介质 |
CN112486707A (zh) * | 2020-12-14 | 2021-03-12 | 中国人民银行清算总中心 | 基于Redis的消息异步消费方法及装置 |
CN112543134A (zh) * | 2020-12-08 | 2021-03-23 | 航天科技控股集团股份有限公司 | 一种基于t-box平台的can数据存储系统 |
CN113094362A (zh) * | 2021-04-30 | 2021-07-09 | 中国银行股份有限公司 | 一种异步消息可靠投递和处理的方法和装置 |
CN113179304A (zh) * | 2021-04-22 | 2021-07-27 | 平安消费金融有限公司 | 消息下发方法、系统、设备及存储介质 |
CN113312386A (zh) * | 2021-05-10 | 2021-08-27 | 四川新网银行股份有限公司 | 一种基于分布式消息的批量入库方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110265098A1 (en) * | 2010-04-21 | 2011-10-27 | International Business Machines Corporation | Message Passing with Queues and Channels |
CN102622426A (zh) * | 2012-02-27 | 2012-08-01 | 杭州闪亮科技有限公司 | 数据库写入系统及方法 |
CN103488690A (zh) * | 2013-09-02 | 2014-01-01 | 用友软件股份有限公司 | 数据集成系统和数据集成方法 |
CN107025142A (zh) * | 2016-01-29 | 2017-08-08 | 华为技术有限公司 | 一种线程间消息传递方法、装置及电子设备 |
CN109271265A (zh) * | 2018-09-29 | 2019-01-25 | 平安科技(深圳)有限公司 | 基于消息队列的请求处理方法、装置、设备及存储介质 |
-
2019
- 2019-12-31 CN CN201911423622.4A patent/CN111143093B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110265098A1 (en) * | 2010-04-21 | 2011-10-27 | International Business Machines Corporation | Message Passing with Queues and Channels |
CN102622426A (zh) * | 2012-02-27 | 2012-08-01 | 杭州闪亮科技有限公司 | 数据库写入系统及方法 |
CN103488690A (zh) * | 2013-09-02 | 2014-01-01 | 用友软件股份有限公司 | 数据集成系统和数据集成方法 |
CN107025142A (zh) * | 2016-01-29 | 2017-08-08 | 华为技术有限公司 | 一种线程间消息传递方法、装置及电子设备 |
CN109271265A (zh) * | 2018-09-29 | 2019-01-25 | 平安科技(深圳)有限公司 | 基于消息队列的请求处理方法、装置、设备及存储介质 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112084047A (zh) * | 2020-09-14 | 2020-12-15 | 浪潮云信息技术股份公司 | 一种基于异步线程池的消息发送实现方法 |
CN112132685A (zh) * | 2020-09-29 | 2020-12-25 | 中国银行股份有限公司 | 信息处理方法及装置、计算机设备及计算机可读存储介质 |
CN112132685B (zh) * | 2020-09-29 | 2024-02-23 | 中国银行股份有限公司 | 信息处理方法及装置、计算机设备及计算机可读存储介质 |
CN112543134A (zh) * | 2020-12-08 | 2021-03-23 | 航天科技控股集团股份有限公司 | 一种基于t-box平台的can数据存储系统 |
CN112486707A (zh) * | 2020-12-14 | 2021-03-12 | 中国人民银行清算总中心 | 基于Redis的消息异步消费方法及装置 |
CN113179304A (zh) * | 2021-04-22 | 2021-07-27 | 平安消费金融有限公司 | 消息下发方法、系统、设备及存储介质 |
CN113094362A (zh) * | 2021-04-30 | 2021-07-09 | 中国银行股份有限公司 | 一种异步消息可靠投递和处理的方法和装置 |
CN113094362B (zh) * | 2021-04-30 | 2024-04-16 | 中国银行股份有限公司 | 一种异步消息可靠投递和处理的方法和装置 |
CN113312386A (zh) * | 2021-05-10 | 2021-08-27 | 四川新网银行股份有限公司 | 一种基于分布式消息的批量入库方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111143093B (zh) | 2024-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111143093B (zh) | 异步消息分布式处理方法、装置、设备及存储介质 | |
US10509585B2 (en) | Data synchronization method, apparatus, and system | |
CN106899648B (zh) | 一种数据处理方法和设备 | |
CN110968586B (zh) | 分布式事务处理方法及装置 | |
CN110019514B (zh) | 数据同步方法、装置以及电子设备 | |
US10884623B2 (en) | Method and apparatus for upgrading a distributed storage system | |
CN110825420A (zh) | 分布式集群的配置参数更新方法、装置、设备及存储介质 | |
CN110968603B (zh) | 一种数据访问方法及装置 | |
CN106155775B (zh) | 消息处理方法、设备及系统 | |
CN105589658B (zh) | 资源处理方法、系统及服务器、仓库管理方法及装置 | |
CN111258742A (zh) | 一种数据同步的方法、系统、计算设备及存储介质 | |
CN111666088A (zh) | Pod的更替方法、装置、电子设备及计算机可读存储介质 | |
CN113556389A (zh) | 一种rpc式的云边端通信方法、系统及存储介质 | |
CN111884769A (zh) | 消息同步方法及装置 | |
CN114157997B (zh) | 一种iros话题桥接方法、设备及介质 | |
CN110968406A (zh) | 处理任务的方法、装置、存储介质和处理器 | |
CN110928944B (zh) | 一种数据处理方法及其装置 | |
CN111045812A (zh) | 一种区块链智能合约反向调用方法、设备及介质 | |
CN111143251A (zh) | 一种数据中心控制系统及其方法 | |
CN110618863A (zh) | 一种基于Raft算法的作业调度方法 | |
CN113554498B (zh) | 一种针对用户账务请求的处理方法和装置 | |
CN111143385A (zh) | 一种区块链智能合约反向调用方法、设备及介质 | |
CN111629395B (zh) | 一种多模通信天线单元、系统及方法 | |
CN115061750B (zh) | 针对应用程序的组件化数据交互方法、装置、设备及介质 | |
CN116225757A (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 |