消息确认方法及装置、存储介质及电子设备与流程

文档序号:27769749发布日期:2021-12-04 02:23阅读:106来源:国知局
消息确认方法及装置、存储介质及电子设备与流程

1.本发明涉及消息处理技术领域,特别是涉及一种消息确认方法及装置、存储介质及电子设备。


背景技术:

2.消息队列(message queue,mq)是一种应用间的通信方式,通过消息生产者发送消息至消息队列,消息消费者从消息队列中接收消息,以实现消息在生产者与消费者之间的传递,其中,消息生产者与消费者互不依赖,使得该方式可作为一种较为可靠的消息传递机制,被广泛应用于银行系统的开发。
3.现有技术中,运用mq机制将消息发送时,消息生产者把产生的消息放到缓存区中,同时后台的线程会不断扫描这个缓存区,将消息发送出去,broker会返回一个确认结果给生产者,如果返回的确认结果为成功,则表示消息已经发送成功,所以该消息不再发送,如果返回的确认结果为失败或者超时未返回确认结果,则会重发这条消息,以此确认机制来确保消息的发送。但是,在消息发送之前,如果负责发送消息的客户端挂掉了,缓存区中的消息会丢失;在消息发送之后,如果broker出现问题,无法返回确认结果,超时后,按该确认机制会直接判定该消息需要重发。因此在现有技术的应用中会出现消息丢失或者重复发送的问题,从而造成消息的数据安全隐患,无法确保异步操作的准确性。


技术实现要素:

4.有鉴于此,本发明实施例提供一种消息确认方法,通过该方法,可以避免消息发送至消息队列时出现消息丢失或重复发送的问题。
5.本发明还提供了一种消息确认装置,用以保证上述方法在实际中的实现及应用。
6.为实现上述目的,本发明实施例提供如下技术方案:
7.一种消息确认方法,包括:
8.将预先建立的数据库表中消息状态为待处理的消息确定为待确认消息,所述数据库表用于预存消息生产者产生的所有消息,且每个所述消息对应一个交易信息;
9.确定所述待确认消息对应的消息类型;
10.确定所述消息类型对应的判断逻辑,并根据所述判断逻辑确定所述待确认消息对应的交易信息的交易状态,所述判断逻辑是指预先设定的判断规则;
11.若所述待确认消息对应的交易信息的交易状态为交易成功,则向已建立的消息队列发送所述待确认消息,并在所述待确认消息成功发送至所述消息队列后,修改所述待确认消息的消息状态为发送成功;
12.若所述待确认消息对应的交易信息的交易状态为交易失败,则对所述待确认消息进行废弃操作,所述废弃操作是针对所述待确认消息进行消息状态的修改以标记不需要向所述消息队列发送该待确认消息,若所述待确认消息成功完成废弃操作,则所述待确认消息的消息状态为废弃成功;
13.若所述待确认消息对应的交易信息的交易状态为交易处理中,则重新确定所述待确认消息对应的交易信息的交易状态,直至所述待确认消息对应的交易信息的交易状态不为交易处理中。
14.上述的方法,可选的,所述将消息生产者产生的所有消息预存至所述数据库表的过程,包括:
15.获取消息生产者产生的所有消息以及每个所述消息对应的交易信息,并对已获取的各个所述消息的消息数据进行封装,以确保向消息队列发送所述消息时所述消息的消息数据不发生改变;
16.确定每个所述交易信息的确认标识,根据所述确认标识存储该交易信息所对应的各个已封装的消息至所述数据库表中,所述确认标识唯一标识该交易信息;
17.其中,当所有所述已封装的消息成功存储至所述数据库表时,确定每个所述已封装的消息的消息编号,并设置每个所述已封装的消息的消息状态为待处理,所述消息编号唯一标识该消息。
18.上述的方法,可选的,所述在所述待确认消息成功发送至所述消息队列后,修改所述待确认消息的消息状态为发送成功,包括:
19.根据所述待确认消息的消息编号,在所述数据库表中查找到所述待确认消息;
20.修改所述数据库表中所述待确认消息的消息状态为发送成功。
21.上述的方法,可选的,所述根据所述确认标识存储该交易信息所对应的已封装的消息至所述数据库表中后,还包括:
22.对该交易信息所对应的每个已封装的消息进行业务逻辑处理,所述业务逻辑处理包括所述已封装的消息发送至所述消息队列前的所有逻辑处理过程;
23.当每个所述已封装的消息成功完成所述业务逻辑处理时,向所述消息队列发送该已封装的消息;
24.当每个所述已封装的消息未成功完成所述业务逻辑处理时,对该已封装的消息进行废弃操作。
25.上述的方法,可选的,所述将预先建立的数据库表中消息状态为待处理的消息确定为待确认消息,包括:
26.确定第一时间间隔值;
27.当预先设定的计时器计算的时间间隔值达到所述第一时间间隔值,则选取所述数据库表中消息状态为待处理的消息作为待确认消息。
28.一种消息确认装置,包括:
29.第一确定单元,用于将预先建立的数据库表中消息状态为待处理的消息确定为待确认消息,所述数据库表用于预存消息生产者产生的所有消息,且每个所述消息对应一个交易信息;
30.第二确定单元,用于确定所述待确认消息对应的消息类型;
31.第三确定单元,用于确定所述消息类型对应的判断逻辑,并根据所述判断逻辑确定所述待确认消息对应的交易信息的交易状态,所述判断逻辑是指预先设定的判断规则;
32.第一执行单元,用于若所述待确认消息对应的交易信息的交易状态为交易成功,则向已建立的消息队列发送所述待确认消息,并在所述待确认消息成功发送至所述消息队
列后,修改所述待确认消息的消息状态为发送成功;
33.第二执行单元,用于若所述待确认消息对应的交易信息的交易状态为交易失败,则对所述待确认消息进行废弃操作,所述废弃操作是针对所述待确认消息进行消息状态的修改以标记不需要向所述消息队列发送该待确认消息,若所述待确认消息成功完成废弃操作,则所述待确认消息的消息状态为废弃成功;
34.第三执行单元,用于若所述待确认消息对应的交易信息的交易状态为交易处理中,则重新确定所述待确认消息对应的交易信息的交易状态,直至所述待确认消息对应的交易信息的交易状态不为交易处理中。
35.上述的装置,可选的,还包括:
36.获取单元,用于获取消息生产者产生的所有消息以及每个所述消息对应的交易信息,并对已获取的各个所述消息的消息数据进行封装,以确保向消息队列发送所述消息时所述消息的消息数据不发生改变;
37.第四确定单元,用于确定每个所述交易信息的确认标识,根据所述确认标识存储该交易信息所对应的各个已封装的消息至所述数据库表中,所述确认标识唯一标识该交易信息;
38.其中,当所有所述已封装的消息成功存储至所述数据库表时,确定每个所述已封装的消息的消息编号,并设置每个所述已封装的消息的消息状态为待处理,所述消息编号唯一标识该消息。
39.上述的装置,可选的,所述第一确定单元,包括:
40.确定子单元,用于确定第一时间间隔值;
41.选取子单元,用于当预先设定的计时器计算的时间间隔值达到所述第一时间间隔值,则选取所述数据库表中消息状态为待处理的消息作为待确认消息。
42.一种存储介质,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行上述的消息确认的方法。
43.一种电子设备,包括存储器,以及一个或者一个以上的指令,其中一个或者一个以上指令存储于存储器中,且经配置以由一个或者一个以上处理器执行上述的消息确认的方法。
44.上述本发明实施例提供的消息确认方法中,将预先建立的数据库表中消息状态为待处理的消息确定为待确认消息,确定待确认消息对应的消息类型,然后确定消息类型对应的判断逻辑,并根据判断逻辑确定待确认消息对应的交易信息的交易状态;如果待确认消息对应的交易信息的交易状态为交易成功,则向已建立的消息队列发送待确认消息,并在待确认消息成功发送至消息队列后,修改待确认消息的消息状态为发送成功;如果待确认消息对应的交易信息的交易状态为交易失败,则对待确认消息进行废弃操作,若待确认消息成功完成废弃操作,则待确认消息的消息状态为废弃成功;如果待确认消息对应的交易信息的交易状态为交易处理中,则重新确定该待确认消息对应的交易信息的交易状态,直至待确认消息对应的交易信息的交易状态不为交易处理中。
45.应用本发明实施例提供的方法,将消息生产者产生的所有消息在发送之前存入数据库表,能够防止消息在传送过程中丢失;同时,对消息生产者未处理或未处理成功的消息,即消息状态为待处理的消息,应用设定的判断逻辑确定待确认消息对应的交易信息的
交易状态,若交易状态为交易成功,则向消息队列发送该消息,若交易状态为交易失败,则对该消息执行废弃操作后,并在成功发送待确认消息至消息队列或待确认消息成功完成废弃操作时及时修改消息状态为发送成功或废弃成功,从而避免消息的重复发送,保证需要发送的消息能够从消息生产者端成功发送出去。
附图说明
46.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
47.图1为本发明实施例提供的一种消息确认方法的方法流程图;
48.图2为本发明实施例提供的一种消息确认方法的又一方法流程图;
49.图3为本发明实施例提供的一种消息确认方法的再一方法流程图;
50.图4为本发明实施例提供的一种消息发送方法的具体流程图;
51.图5为本发明实施例提供的一种消息发送流程中的消息状态变化图;
52.图6为本发明实施例提供的一种消息确认方法的另一具体流程图;
53.图7为本发明实施例提供的一种消息确认流程中的消息状态变化图;
54.图8为本发明实施例提供的一种机消息确认装置的装置结构图;
55.图9为本发明实施例提供的一种电子设备结构示意图。
具体实施方式
56.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
57.在本技术中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
58.本发明实施例提供了一种消息确认方法,该方法可以应用在多种系统平台,其执行主体可以为计算机终端或各种移动设备的处理器,所述方法的方法流程图如图1所示,具体包括:
59.s101:将预先建立的数据库表中消息状态为待处理的消息确定为待确认消息,所述数据库表用于预存消息生产者产生的所有消息,且每个所述消息对应一个交易信息。
60.本发明提供的实施例中,从预先建立的数据库表中选取消息状态为待处理的消息,作为需要进行确认的消息,即待确认消息。其中,该消息对应一个交易过程,一个交易过程可能产生多条消息,这些消息的状态跟与之对应的交易信息的交易状态息息相关。
61.需要说明的是,消息生产者向消息队列发送消息之前,需要先将消息存储至数据
库表中,该数据库表是用于存储消息的表,消息预存至数据库表中后,无论消息在发送过程中发送成功或失败,该消息不会丢失,仍然存在于数据库表中。
62.还需要说明的是,成功预存至数据库表中的消息有三种状态:待处理、发送成功和废弃成功。其中,待处理是指未处理或者是未处理成功的消息,需要根据消息对应的交易信息的交易状态进行进一步的操作,或发送该消息到消息队列,或对该消息进行废弃操作。未处理成功的消息是指未成功将该消息发送至消息队列或该消息未成功进行废弃操作,其消息状态仍为待处理;所述未处理的消息是指从未向消息队列发送该消息且该消息从未进行过废弃操作,其消息状态为待处理。而发送成功是指该消息已经成功发送到消息队列,废弃成功是指该消息已经成功完成废弃操作,不需要发送到消息队列。
63.s102:确定所述待确认消息对应的消息类型。
64.本发明提供的实施例中,确定待确认消息的消息类型。可以根据待确认消息的特征,得到该消息的消息类型。
65.s103:确定所述消息类型对应的判断逻辑,并根据所述判断逻辑确定所述待确认消息对应的交易信息的交易状态,所述判断逻辑是指预先设定的判断规则。
66.本发明提供的实施例中,不同的消息类型对应不同的判断逻辑。判断逻辑是指预先设定的判断规则,根据该规则,可以得到消息对应的交易信息的交易状态,并根据该交易状态可以确定是否需要向消息队列发送该待确认消息或对该待确认消息做废弃操作。
67.例如,假设交易信息对应的交易成功后会产生一条记录到日志表,把日志编号当做交易信息对应的各个消息的确认编号,则可以根据日志表是否有记录判断消息是否需要重新发送。查询到待确认消息的确认编号即日志编号存在,说明交易信息的交易状态为交易成功,需要向消息队列发送该待确认消息,若待确认消息的确认编号即日志编号不存在,则对该待确认消息执行废弃操作,该判断过程就可以作为一种确认消息的判断逻辑。根据不同的消息类型设计不同的判断逻辑,只有通过判断逻辑得出的结果无误,才能保证后续操作的准确。
68.s104:若所述待确认消息对应的交易信息的交易状态为交易成功,则向已建立的消息队列发送所述待确认消息,并在所述待确认消息成功发送至所述消息队列后,修改所述待确认消息的消息状态为发送成功。
69.本发明提供的实施例中,如果待确认消息对应的交易信息的交易状态为交易成功,则说明该待确认消息在进行交易处理时未能发送成功,现交易成功,需要重新发送该待确认消息。所以消息生产者向已建立的消息队列发送该待确认消息。若成功发送该待确认消息至消息队列,则将该待确认消息的消息状态由待处理改为发送成功,表示该待确认消息已经成功发送至消息队列;若未成功发送该待确认消息至消息队列,则该待确认消息的消息状态不做改变,仍为待处理,等待下一次对数据库表进行扫描时,重新确认该待确认消息的状态并做对应的处理。
70.其中,消息的发送机制与交易的进行属于异步操作,消息能否重新发送成功不影响正常的交易流程,两者互不干扰又相互补充,而两者关联为根据交易信息的交易状态来确定消息是否需要重新发送。
71.s105:若所述待确认消息对应的交易信息的交易状态为交易失败,则对所述待确认消息进行废弃操作,所述废弃操作是针对所述待确认消息进行消息状态的修改以标记不
需要向所述消息队列发送该待确认消息,若所述待确认消息成功完成废弃操作,则所述待确认消息的消息状态为废弃成功。
72.本发明提供的实施例中,如果待确认消息对应的交易信息的交易状态为交易失败,则说明交易失败,发送该消息至消息队列没有意义,所以不需要重新发送该待确认消息,并且需要对该待确认消息执行废弃操作。废弃时,根据预存消息到数据库表时产生的消息编号,在数据库表中查询到对应的消息记录,修改该待确认消息的状态。若废弃成功,则该待确认消息的消息状态由待处理变更为废弃成功;若未成功废弃该待确认消息,则该待确认消息的消息状态不做改变,仍为待处理,等待下一次对数据库进行扫描时,重新确认该待确认消息的状态并做对应的处理。通过本发明提供的消息确认方法,能够弥补废弃失败的影响,对消息再次处理。
73.其中,无论消息的废弃操作是否成功,都不影响正常的交易流程。
74.s106:若所述待确认消息对应的交易信息的交易状态为交易处理中,则重新确定所述待确认消息对应的交易信息的交易状态,直至所述待确认消息对应的交易信息的交易状态不为交易处理中。
75.本发明提供的实施例中,如果待确认消息对应的交易信息的交易状态为交易处理中,则说明交易仍在进行,结果尚未明确,需要重新确定待确认消息对应的交易信息的交易状态,直至出现确定的交易状态,即交易成功或交易失败,最后根据得到的交易信息的交易状态执行s104或s105对应的操作。
76.其中,重新确定待确认消息对应的交易信息的交易状态的重复次数以及时间间隔都能够通过配置参数来设定。
77.本发明提供的实施例提供的消息确认方法中,将预先建立的数据库表中消息状态为待处理的消息确定为待确认消息,确定待确认消息对应的消息类型,然后确定消息类型对应的判断逻辑,并根据判断逻辑确定待确认消息对应的交易信息的交易状态;如果待确认消息对应的交易信息的交易状态为交易成功,则向已建立的消息队列发送待确认消息,并在待确认消息成功发送至消息队列后,修改待确认消息的消息状态为发送成功;如果待确认消息对应的交易信息的交易状态为交易失败,则对待确认消息进行废弃操作,若待确认消息成功完成废弃操作,则待确认消息的消息状态为废弃成功;如果待确认消息对应的交易信息的交易状态为交易处理中,则重新确定该待确认消息对应的交易信息的交易状态,直至待确认消息对应的交易信息的交易状态不为交易处理中。
78.应用本发明实施例提供的方法,将消息生产者产生的所有消息在发送之前存入数据库表,能够防止消息在传送过程中丢失;同时,对消息生产者未处理或未处理成功的消息,即消息状态为待处理的消息,应用设定的判断逻辑确定待确认消息对应的交易信息的交易状态,若交易状态为交易成功,则向消息队列发送该消息,若交易状态为交易失败,则对该消息执行废弃操作后,并在成功发送待确认消息至消息队列或待确认消息成功完成废弃操作时及时修改消息状态为发送成功或废弃成功,从而避免消息的重复发送,保证需要发送的消息能够从消息生产者端成功发送出去。
79.此外,消息的废弃操作能够及时结束一条消息的处理过程,减少确认的消息数量,减轻系统的压力。并且,消息的发送或者废弃失败不影响主要的交易流程,提高了交易流程的响应时间和效率,提升用户体验。
80.在一个实施例中,如图2所示,所述将消息生产者产生的所有消息预存至所述数据库表的过程,包括:
81.s201:获取消息生产者产生的所有消息以及每个所述消息对应的交易信息,并对已获取的各个所述消息的消息数据进行封装,以确保向消息队列发送所述消息时所述消息的消息数据不发生改变。
82.本发明提供的实施例中,当消息生产者需要经由消息队列将消息发送到消息消费者处之前,对将要发送的消息进行封装,然后将消息预存到数据库表,以防消息丢失。获取消息生产者产生的所有消息,封装消息包括该消息的全部数据,而且发送时不能再对其中的消息数据进行变动,以免造成预存和发送数据不一致的问题。并且,获取需要进行封装的消息对应的交易信息,一条消息对应一个交易信息。
83.s202:确定每个所述交易信息的确认标识,根据所述确认标识存储该交易信息所对应的各个已封装的消息至所述数据库表中,所述确认标识唯一标识该交易信息。
84.其中,当所有所述已封装的消息成功存储至所述数据库表时,确定每个所述已封装的消息的消息编号,并设置每个所述已封装的消息的消息状态为待处理,所述消息编号唯一标识该消息。
85.本发明提供的实施例中,预存每个已封装的消息前都需要确定该消息对应的交易信息的确认标识,比如uuid或者日志编号等,这个确认标识用于进行消息确认时区分各个交易信息,防止与其他交易信息混淆,以便后续消息确认机制能定位到该笔交易。确认标识是判断该消息后续如何处理的重要信息。根据确认标识和各个已封装完成的消息,存储与各个交易信息对应的各个已封装消息至数据库表中。
86.需要说明的是,预存到数据库表中的各个消息,此时的消息状态是待处理。预存失败意味着交易处理失败,预存成功才能进行下一步操作。当交易信息对应的各个消息预存成功时,会产生各个消息对应的消息编号,消息编号唯一标识一条消息。
87.本发明提供的实施例中,获取消息生产者产生的所有消息以及每个所述消息对应的交易信息,并对已获取的各个所述消息的消息数据进行封装,确定每个交易信息的确认标识,然后根据确认标识存储该交易信息所对应的各个已封装的消息至数据库表,并当所有所述已封装的消息成功存储至所述数据库表时,确定每个所述已封装的消息的消息编号,并设置每个所述已封装的消息的消息状态为待处理。
88.应用本发明提供的实施例,通过封装消息的消息数据并存储已封装的消息至数据库表,防止消息在传送时发生改变或丢失,为现有技术中消息缓存区不稳定的问题提供了一种可靠的解决方法,从而保障了用户的消息的数据安全。
89.在一个实施例中,如图3所示,所述在所述待确认消息成功发送至所述消息队列后,修改所述待确认消息的消息状态为发送成功,包括:
90.s301:根据所述待确认消息的消息编号,在所述数据库表中查找到所述待确认消息。
91.本发明提供的实施例中,消息编号唯一标识一个消息,在待确认消息成功发送至消息队列后,根据该待确认消息的消息编号,在数据库表中查找到该待确认消息。
92.s302:修改所述数据库表中所述待确认消息的消息状态为发送成功。
93.在数据库表中查找到待确认消息后,修改数据库表中该待确认消息的消息状态为
发送成功,以标识该消息已成功发送至消息队列。
94.需要说明的是,对于消息的废弃操作,同理,当需要对消息进行废弃操作时,根据该消息的消息编号,在数据库表中查找到该消息,修改该消息的消息状态,成功执行废弃操作后,该消息的消息状态为废弃成功。
95.应用本实施例提供的方法,根据待确认消息的消息编号,在数据库表中查找到该待确认消息,并修改数据库表中该待确认消息的消息状态为发送成功,从而标记该待确认消息已成功发送至消息队列,避免下一次对数据库表扫描并进行确认操作时,重复发送该消息。
96.本发明提供的实施例中,可选的,所述根据所述确认标识存储该交易信息所对应的已封装的消息至所述数据库表中后,还包括:
97.对该交易信息所对应的每个已封装的消息进行业务逻辑处理,所述业务逻辑处理包括所述已封装的消息发送至所述消息队列前的所有逻辑处理过程;
98.当每个所述已封装的消息成功完成所述业务逻辑处理时,向所述消息队列发送该已封装的消息;
99.当每个所述已封装的消息未成功完成所述业务逻辑处理时,对该已封装的消息进行废弃操作。
100.本发明提供的实施例中,当交易信息对应的各个已封装的消息成功存储至数据库表后,对该交易信息所对应的每个已封装的消息进行业务逻辑处理。
101.其中,业务逻辑处理过程,包含已封装的消息发送至消息队列前的所有逻辑处理过程。当每个所述已封装的消息成功完成业务逻辑处理时,向消息队列发送该已封装的消息;当每个所述已封装的消息未成功完成所述业务逻辑处理时,则对该已封装的消息进行废弃操作。
102.还需要说明的是当交易信息所对应的已封装的消息成功存储至数据库表中时,才对该已封装的消息进行业务逻辑处理,如果该交易信息所对应的已封装的消息没有成功存储至数据库表,则说明该交易失败,无需再进行下一步操作,即无需对该交易信息所对应的已封装的消息进行业务逻辑处理。
103.应用本发明提供的实施例,对成功存储至数据库表中的已封装的消息进行业务逻辑处理,然后将成功完成业务逻辑处理的已封装的消息发送至消息队列,保证消息的可靠性;而对未成功完成业务逻辑处理的已封装的消息进行废弃操作,能够及时结束消息的处理过程,减少确认的消息数量,减轻系统的压力。
104.本发明提供的实施例中,可选的,所述将预先建立的数据库表中消息状态为待处理的消息确定为待确认消息,包括:
105.确定第一时间间隔值;
106.当预先设定的计时器计算的时间间隔值达到所述第一时间间隔值,则选取所述数据库表中消息状态为待处理的消息作为待确认消息。
107.本发明提供的实施例中,定时任务扫描数据库表,找到需要确认的消息,需要确认的消息即待确认消息为数据库表中消息状态为待处理的消息。确定第一时间阈值即设定一个定时任务,每隔一个固定的时间,也即预先设定的计时器计算的时间间隔值达到第一时间间隔值时,扫描存储消息的数据库表,筛选出消息状态是待处理的消息作为待确认消息,
则对该待确认消息进行回调确认操作。
108.其中,还可以设定消息筛选的时间段,如只希望对最近3天内的消息做确认处理,能通过参数配置,筛选这个时间段的数据。通过定时任务筛选的消息,按顺序进行确认处理。
109.本发明实施例提供的方法中,确定第一时间间隔值,当预先设定的计时器计算的时间间隔值达到所述第一时间间隔值,则选取数据库表中消息状态为待处理的消息作为待确认消息。应用本发明实施例提供的方法,在固定时间间隔即第一时间间隔内扫描数据库表,选取数据库表中消息状态为待处理的消息作为待确认消息,保证确认操作定时启动,及时处理数据库表中的各个待确认消息,及时发送或者废弃其中的各个消息,从而减轻系统的压力。
110.本发明提供的实施例中,消息发送机制的具体流程图如图4所示,在异步操作之前,第一步是组装消息,将需要预存至数据库表和发送到消息队列的消息封装好,然后进行消息预存,把已封装的消息存储到数据库表。如果预存消息至数据库表失败,异步流程结束。如果预存消息至数据库表成功,则对该消息进行业务逻辑处理。如果消息进行业务逻辑处理失败,即未成功完成业务逻辑处理,则需要对该预存的消息执行废弃操作;如果消息进行业务逻辑处理成功,即成功完成业务逻辑处理,则向消息队列发送该消息。对消息执行废弃操作和向消息队列发送消息的结果均不影响异步处理流程,这两个步骤中,如果有失败的情况,消息确认机制生效,会自动回调确认进行后续的处理。
111.其中,向消息队列发送消息的过程中状态变化过程如图5所示,成功预存至数据库表中的消息的初始状态为待处理;将成功预存至数据库表中的消息进行业务逻辑处理,若业务逻辑处理成功,即成功完成业务逻辑处理,则向消息队列发送该消息,发送成功则修改该消息的消息状态为发送成功,发送失败则该消息的消息状态仍为待处理;若业务逻辑处理失败,则对该消息进行废弃操作,若该消息成功完成废弃操作则该消息的消息状态为废弃成功;若该消息未成功完成废弃操作,则该消息的消息状态仍为待处理。
112.本发明提供的实施例中,消息确认机制的具体流程图如图6所示,消息确认机制存在定时任务,该任务能够定时扫描数据库表,即消息预存的表,如果扫描过程中发现该数据库表中存在待确认的消息,对这条待确认消息进行逻辑判断,判断结果跟该待确认消息对应的交易信息的交易状态相关,若该待确认消息对应的交易信息的交易状态为交易成功,则判断结果是需要发送,则向消息队列发送该待确认消息。若该待确认消息对应的交易信息的交易状态为交易失败,则判断结果是废弃,对该消息做消息废弃操作。若该待确认消息对应的交易信息的交易状态为交易处理中,则重新发起确认。
113.其中,消息进行确认过程中状态变化过程如图7所示,定时筛选消息状态为待处理的消息作为待确认消息,对待确认消息运用设定的判定逻辑进行判定。其中,判定结果跟该待确认消息对应的交易信息的交易状态相关,若该待确认消息对应的交易信息的交易状态为交易成功,则判定结果为发送,向消息队列发送该消息,成功发送该待确认消息至消息队列则修改该待确认消息的消息状态为发送成功,发送失败,即未成功发送该待确认消息至消息队列则该待确认消息的消息状态为待处理;该待确认消息对应的交易信息的交易状态为交易失败,则判定结果为废弃,对该消息进行废弃操作;若废弃成功,即该待确认消息成功完成废弃操作,则该待确认消息的消息状态为废弃成功;若未废弃成功,即该待确认消息
未成功完成废弃操作,则该消息的消息状态仍为待处理。
114.上述各个实施例的具体实施过程及其衍生方式,均在本发明的保护范围之内。
115.与图1所述的方法相对应,本发明实施例还提供了一种消息确认装置,用于对图1中方法的具体实现,本发明实施例提供的消息确认装置可以应用计算机终端或各种移动设备中,其结构示意图如图8所示,具体包括:
116.第一确定单元801,用于将预先建立的数据库表中消息状态为待处理的消息确定为待确认消息,所述数据库表用于预存消息生产者产生的所有消息,且每个所述消息对应一个交易信息;
117.第二确定单元802,用于确定所述待确认消息对应的消息类型;
118.第三确定单元803,用于确定所述消息类型对应的判断逻辑,并根据所述判断逻辑确定所述待确认消息对应的交易信息的交易状态,所述判断逻辑是指预先设定的判断规则;
119.第一执行单元804,用于若所述待确认消息对应的交易信息的交易状态为交易成功,则向已建立的消息队列发送所述待确认消息,并在所述待确认消息成功发送至所述消息队列后,修改所述待确认消息的消息状态为发送成功;
120.第二执行单元805,用于若所述待确认消息对应的交易信息的交易状态为交易失败,则对所述待确认消息进行废弃操作,所述废弃操作是针对所述待确认消息进行消息状态的修改以标记不需要向所述消息队列发送该待确认消息,若所述待确认消息成功完成废弃操作,则所述待确认消息的消息状态为废弃成功;
121.第三执行单元806,用于若所述待确认消息对应的交易信息的交易状态为交易处理中,则重新确定所述待确认消息对应的交易信息的交易状态,直至所述待确认消息对应的交易信息的交易状态不为交易处理中。
122.本发明实施例提供的消息确认装置中,第一确定单元将预先建立的数据库表中消息状态为待处理的消息确定为待确认消息,第二确定单元确定待确认消息对应的消息类型,然后第三确定单元确定消息类型对应的判断逻辑,并根据判断逻辑确定待确认消息对应的交易信息的交易状态;如果待确认消息对应的交易信息的交易状态为交易成功,则第一执行单元向已建立的消息队列发送待确认消息,并在待确认消息成功发送至消息队列后,修改待确认消息的消息状态为发送成功;如果待确认消息对应的交易信息的交易状态为交易失败,则第二执行单元对待确认消息进行废弃操作,若待确认消息成功完成废弃操作,则待确认消息的消息状态为废弃成功;如果待确认消息对应的交易信息的交易状态为交易处理中,则第三执行单元重新确定该待确认消息对应的交易信息的交易状态,直至待确认消息对应的交易信息的交易状态不为交易处理中。
123.应用本发明实施例提供的装置,将消息生产者产生的所有消息在发送之前存入数据库表,能够防止消息在传送过程中丢失;同时,对消息生产者未处理或未处理成功的消息,即消息状态为待处理的消息,应用设定的判断逻辑确定待确认消息对应的交易信息的交易状态,若交易状态为交易成功,则向消息队列发送该消息,若交易状态为交易失败,则对该消息执行废弃操作后,并在成功发送待确认消息至消息队列或待确认消息成功完成废弃操作时及时修改消息状态为发送成功或废弃成功,从而避免消息的重复发送,保证需要发送的消息能够从消息生产者端成功发送出去。
124.本发明实施例提供的装置中,可选的,还包括:
125.获取单元,用于获取消息生产者产生的所有消息以及每个所述消息对应的交易信息,并对已获取的各个所述消息的消息数据进行封装,以确保向消息队列发送所述消息时所述消息的消息数据不发生改变;
126.第四确定单元,用于确定每个所述交易信息的确认标识,根据所述确认标识存储该交易信息所对应的各个已封装的消息至所述数据库表中,所述确认标识唯一标识该交易信息;
127.其中,当所有所述已封装的消息成功存储至所述数据库表时,确定每个所述已封装的消息的消息编号,并设置每个所述已封装的消息的消息状态为待处理,所述消息编号唯一标识该消息。
128.本发明实施例提供的装置中,可选的,所述第一确定单元,包括:
129.确定子单元,用于确定第一时间间隔值;
130.选取子单元,用于当预先设定的计时器计算的时间间隔值达到所述第一时间间隔值,则选取所述数据库表中消息状态为待处理的消息作为待确认消息。
131.以上本发明实施例公开的消息确认装置中各个单元及子单元的具体工作过程,可参见本发明上述实施例公开的消息确认方法中的对应内容,这里不再进行赘述。
132.本发明实施例还提供了一种存储介质,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行上述消息确认方法。
133.本发明实施例还提供了一种电子设备,其结构示意图如图9所示,具体包括存储器901,以及一个或者一个以上的指令902,其中一个或者一个以上指令902存储于存储器901中,且经配置以由一个或者一个以上处理器903执行所述一个或者一个以上指令902进行以下操作:
134.将预先建立的数据库表中消息状态为待处理的消息确定为待确认消息,所述数据库表用于预存消息生产者产生的所有消息,且每个所述消息对应一个交易信息;
135.确定所述待确认消息对应的消息类型;
136.确定所述消息类型对应的判断逻辑,并根据所述判断逻辑确定所述待确认消息对应的交易信息的交易状态,所述判断逻辑是指预先设定的判断规则;
137.若所述待确认消息对应的交易信息的交易状态为交易成功,则向已建立的消息队列发送所述待确认消息,并在所述待确认消息成功发送至所述消息队列后,修改所述待确认消息的消息状态为发送成功;
138.若所述待确认消息对应的交易信息的交易状态为交易失败,则对所述待确认消息进行废弃操作,所述废弃操作是针对所述待确认消息进行消息状态的修改以标记不需要向所述消息队列发送该待确认消息,若所述待确认消息成功完成废弃操作,则所述待确认消息的消息状态为废弃成功;
139.若所述待确认消息对应的交易信息的交易状态为交易处理中,则重新确定所述待确认消息对应的交易信息的交易状态,直至所述待确认消息对应的交易信息的交易状态不为交易处理中。
140.需要说明的是,本发明提供的消息确认方法及装置、存储介质及电子设备可用于金融领域或其他领域,例如,可用于金融领域中的支付应用场景。其他领域为除金融领域之
外的任意领域,例如,通信领域。上述仅为示例,并不对本发明提供的消息确认方法及装置、存储介质及电子设备的应用领域进行限定。
141.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
142.专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
143.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1