掌桥专利:专业的专利平台
掌桥专利
首页

一种消息发送方法、装置、设备和计算机可读存储介质

文献发布时间:2023-06-19 10:24:22


一种消息发送方法、装置、设备和计算机可读存储介质

技术领域

本发明涉及通信技术领域,尤其涉及一种消息发送方法、装置、设备和计算机可读存储介质。

背景技术

目前,为了实现多个应用系统之间的解耦,应用系统与应用系统之间发消息多采用MQ(Message Queue,消息队列)中间件来完成。具体而言,主动方应用(即发送消息的一方)将消息发送给MQ中间件,MQ中间件将该消息存储到消息队列中,需要该消息的被动方应用(即使用消息的一方)就可以从该消息队列中消费该消息,无需主动方应用分别向需要该消息的被动方应用发送该消息。

但是,通过MQ中间件进行消息传输过程不存在反馈机制,例如:主动方应用是否成功发送消息,主动方应用针对该消息执行的操作是否成功,MQ中间件是否成功存储消息,都不会进行任何反馈,使得主动方应用和被动方应用之间的信息一致性不能得到保障。

例如:用户在物料领用系统领用所需的物料,物料领用系统生成物料领用消息,将物料领用消息发送给MQ中间件,并且针对该物料领用消息生成领用成功记录;MQ中间件在消息队列中存储该物料领用消息,物料管理系统从消息队列中获取该物料领用消息,修改该物料的库存数量;财务管理系统从消息队列中获取该物料领用消息,生成企业成本信息。在此过程中,如果物料领用系统未成功生成领用成功记录,然而物料管理系统和财务管理系统已经进行相应操作,将导致物料领用系统、物料管理系统和财务管理系统的信息不一致。如果MQ中间件存储失败,那么物料管理系统和财务管理系统将不能进行相应操作,然而物料领用系统已经领用成功,同样将导致物料领用系统、物料管理系统和财务管理系统的信息不一致。

发明内容

本发明实施例的主要目的在于提供一种消息发送方法、装置、设备和计算机可读存储介质,以解决现有技术通过MQ中间件进行消息传输过程不存在反馈机制的问题。

针对上述技术问题,本发明实施例是通过以下技术方案来解决的:

本发明实施例还提供了一种消息发送方法,在主动方应用执行的步骤,包括:向消息中间件传输业务消息,以便所述消息中间件将所述业务消息存储到消息队列中;接收所述消息中间件返回的消息存储结果;在所述消息存储结果为消息存储成功时,执行所述业务消息对应的下一步业务操作,并向所述消息中间件发送所述下一步业务操作的操作结果,以便所述消息中间件在所述操作结果为操作成功时,将所述业务消息投递给被动方应用。

其中,所述向消息中间件传输业务消息,包括:向消息中间件传输消息状态为第一状态的所述业务消息,以便所述消息中间件在所述消息队列中存储所述业务消息,并且将所述业务消息的消息状态设置为第一状态;其中,所述第一状态表示所述下一步业务操作的操作结果待确认;所述向所述消息中间件发送所述下一步业务操作的操作结果,包括:在所述下一步业务操作的操作结果为操作成功时,向所述消息中间件发送操作成功消息,以便所述消息中间件根据所述操作成功消息将所述业务消息的消息状态从所述第一状态调整为第二状态;其中,所述第二状态表示所述业务消息待发送。

其中,所述方法还包括:接收来自于所述消息中间件的消息查询信息;其中,所述消息查询信息用于查询所述消息队列中消息状态为第一状态的业务消息对应的操作结果;根据所述消息查询信息,查询所述消息队列中消息状态为第一状态的业务消息对应的操作结果,并将所述消息队列中消息状态为第一状态的业务消息对应的操作结果返回给所述消息中间件。

其中,所述向所述消息中间件发送所述下一步业务操作的操作结果,包括:在所述下一步业务操作的操作结果为操作失败时,向所述消息中间件发送操作失败消息,以便所述消息中间根据所述操作失败消息将所述业务消息从消息存储装置中删除。

其中,在所述接收所述消息中间件返回的消息存储结果之后,所述方法还包括:在所述消息存储结果为消息存储失败时,禁止执行所述业务消息对应的下一步业务操作。

本发明实施例还提供了一种消息发送方法,在消息中间件执行的步骤,包括:接收来自于主动方应用的业务消息;将所述业务消息存储到消息队列中;向所述主动方应用返回所述业务消息的消息存储结果,以便所述主动方应用在所述消息存储结果为消息存储成功时,执行所述业务消息对应的下一步业务操作,并返回所述下一步业务操作的操作结果;接收所述主动方应用返回的所述操作结果,并在所述操作结果为操作成功时,将所述业务消息向被动方应用投递。

其中,所述接收来自于主动方应用的业务消息,包括:所述业务消息的消息状态为第一状态;其中,所述第一状态表示所述下一步业务操作的操作结果待确认;所述将所述业务消息存储到消息队列中,包括:在所述消息队列中存储所述业务消息,并且将所述业务消息的消息状态设置为第一状态;在所述接收所述主动方应用返回的所述操作结果之后,所述方法还包括:在所述操作结果为操作成功时,将所述业务消息的消息状态从第一状态调整为第二状态;其中,所述第二状态表示所述业务消息待发送;所述将所述业务消息向被动方应用投递,包括:将所述消息队列中消息状态为第二状态的业务消息向被动方应用投递。

其中,所述方法还包括:针对所述消息队列中消息状态为第一状态的业务消息,向所述主动方应用发送消息查询信息;其中,所述消息查询信息用于查询所述消息队列中消息状态为第一状态的业务消息对应的操作结果;接收所述主动方应用返回的所述消息队列中消息状态为第一状态的业务消息对应的操作结果;在所述主动方应用返回的操作结果为操作成功时,在所述消息队列中,将所述业务消息的消息状态从第一状态调整为第二状态,以便将调整为第二状态的所述业务消息向所述被动方应用投递。

其中,所述方法还包括:在所述接收所述主动方应用返回的所述操作结果之后,在所述操作结果为操作失败时,将所述业务消息从所述消息队列中删除。

其中,所述方法还包括:在所述业务消息存储失败时,向所述主动方应用发送消息存储失败对应的消息存储结果,以便所述主动方应用禁止执行所述业务消息对应的下一步业务操作。

本发明实施例还提供了一种消息发送装置,设置在主动方应用,包括:传输模块,用于向消息中间件传输业务消息,以便所述消息中间件将所述业务消息存储到消息队列中;第一接收模块,用于接收所述消息中间件返回的消息存储结果;执行模块,用于在所述消息存储结果为消息存储成功时,执行所述业务消息对应的下一步业务操作,并向所述消息中间件发送所述下一步业务操作的操作结果,以便所述消息中间件在所述操作结果为操作成功时,将所述业务消息投递给被动方应用。

本发明实施例还提供了一种消息发送装置,设置在消息中间件,包括:第二接收模块,用于接收来自于主动方应用的业务消息;存储模块,用于将所述业务消息存储到消息队列中;发送模块,用于向所述主动方应用返回所述业务消息的消息存储结果,以便所述主动方应用在所述消息存储结果为消息存储成功时,执行所述业务消息对应的下一步业务操作,并返回所述下一步业务操作的操作结果;接收与投递模块,用于接收所述主动方应用返回的所述操作结果,并在所述操作结果为操作成功时,将所述业务消息向被动方应用投递。

本发明实施例还提供了一种消息发送设备,所述消息发送设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述在主动方应用执行的任一项所述的消息发送方法的步骤,或者,实现上述在消息中间件执行的任一项所述的消息发送方法的步骤。

本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有消息发送程序,所述消息发送程序被处理器执行时实现上述在主动方应用执行的任一项所述的消息发送方法的步骤,或者,实现上述在消息中间件执行的任一项所述的消息发送方法的步骤。

本发明实施例的有益效果如下:

在本发明实施例中,在使用消息中间件进行消息传输的过程中,增加了反馈机制,主动方应用在向消息中间件发送业务消息之后,消息中间件会通知主动方应用业务消息是否存储成功,主动方应用仅在消息存储成功的情况下执行下一步业务操作,主动方应用也会通知消息中间件该下一步业务操作的操作结果,消息中间件仅在操作结果为操作成功的情况下,投递业务消息,避免了消息发送过程中各方的信息不对等,导致的各方信息不一致的问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明一实施例的在主动方应用执行的消息发送方法的流程图;

图2是根据本发明一实施例的在消息中间件执行的消息发送方法的流程图;

图3是根据本发明一实施例的消息发送方法的示意图;

图4是根据本发明一实施例的在主动方应用执行的消息发送方法的具体流程图;

图5是根据本发明一实施例的在消息中间件执行的消息发送方法的具体流程图;

图6是根据本发明一实施例的故障发生点的示意图;

图7是根据本发明一实施例的故障排除步骤的示意图;

图8是根据本发明一实施例的故障排除步骤的流程图;

图9是根据本发明一实施例的设置在主动方应用的消息发送装置的结构图;

图10是根据本发明一实施例的设置在消息中间件的消息发送装置的结构图;

图11是根据本发明一实施例的消息发送设备的结构图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,以下结合附图及具体实施例,对本发明作进一步地详细说明。

根据本发明的实施例,提供了一种在主动方应用执行的消息发送方法。主动方应用部署在主动方应用主机或者主动方应用主机集群中。

如图1所示,是根据本发明一实施例的在主动方应用执行的消息发送方法的流程图。

步骤S110,向消息中间件传输业务消息,以便所述消息中间件将所述业务消息存储到消息队列中。

消息中间件,又称MQ中间件,用于将来自于主动方应用的业务消息存储到消息队列中,并通过消息队列将业务消息投递给被动方应用。

业务消息,是指用于指示或者请求被动方应用执行操作的消息。

在本实施例中,可以向预设的消息中间件主机传输业务消息,或者向消息中间件集群中的一个消息中间件传输业务消息。进一步地,如果向消息中间件集群中的一个消息中间件传输业务消息,则可以随机发送给一个消息中间件;或者,通过负载均衡算法,确定一个负载最小的消息中间件,并且向该负载最小的消息中间件传输业务消息。

如果向一个随机的消息中间件传输业务消息,可以预先获取消息中间件集群中的消息中间件的主机信息,如网络地址,根据随机选择的消息中间件的主机信息,向该消息中间件传输业务消息。

如果采用负载均衡算法传输业务消息,那么该负载均衡算法可以设置在消息中间件集群中的预设主设备中,该主设备连接多个消息中间件。

步骤S120,接收所述消息中间件返回的消息存储结果。

消息存储结果,包括:消息存储成功和消息存储失败。

消息存储成功,是指业务消息被消息中间件成功存储到消息队列中。

消息存储失败,是指业务消息未被消息中间件成功存储到消息队列中。

例如:在业务消息的消息体与消息队列支持的消息体不一致时,业务消息将会出现存储失败的结果。

步骤S130,在所述消息存储结果为消息存储成功时,执行所述业务消息对应的下一步业务操作,并向所述消息中间件发送所述下一步业务操作的操作结果,以便所述消息中间件在所述操作结果为操作成功时,将所述业务消息投递给被动方应用。

在所述消息存储结果为消息存储失败时,禁止执行所述业务消息对应的下一步业务操作。

业务消息对应的下一步业务操作,是指业务消息生成操作的下一步业务操作,该业务消息生成操作用于生成该业务操作。例如:业务消息为物料领用消息,业务消息对应的下一步业务操作为领用成功记录。又如:业务消息为网购订单消息,业务消息对应的下一步业务操作为物流生成操作。

下一步业务操作的操作结果,包括:操作成功和操作失败。例如:在网络故障的情况下,容易导致下一步业务操作的操作失败。

消息中间件在所述操作结果为操作成功时,将所述业务消息投递给被动方应用。消息中间件在所述操作结果为操作失败时,将所述业务消息从消息队列中删除。

在本发明实施例中,在使用消息中间件进行消息传输的过程中,增加了反馈机制,主动方应用在向消息中间件发送业务消息之后,消息中间件会通知主动方应用业务消息是否存储成功,主动方应用仅在消息存储成功的情况下执行下一步业务操作,主动方应用也会通知消息中间件该下一步业务操作的操作结果,消息中间件仅在操作结果为操作成功的情况下,投递业务消息,避免了消息发送过程中各方的信息不对等,导致的各方信息不一致的问题,提升了业务消息发送的可靠性。

例如:用户在物料领用系统领用所需的物料,物料领用系统生成物料领用消息,将物料领用消息发送给MQ中间件;MQ中间件在消息队列中存储该物料领用消息,并将存储结果返回给物料领用系统;物料领用系统仅在存储结果为存储成功的情况下,针对该物料领用消息生成领用成功记录,并将领用成功记录是否生成成功向MQ中间件发送;MQ中间件仅在领用成功记录生成成功的情况下,向物料管理系统和财务管理系统投递该物料领用消息。物料管理系统获得该物料领用消息,修改该物料的库存数量;财务管理系统获得该物料领用消息,生成企业成本信息。在此过程中,如果MQ中间件存储物料领用消息失败,那么物料领用系统将不会生成领用成功记录;如果物料领用系统未成功生成领用成功记录(包括未生成领用成功记录的情况),那么MQ中间件将不会向物料管理系统和财务管理系统投递物料领用消息,保证了物料领用系统、物料管理系统和财务管理系统的信息一致性。

针对上述在主动方应用执行的消息发送方法,本发明实施例还提供了一种在消息中间件执行的消息发送方法。消息中间件部署在消息中间件主机或者消息中间件主机集群中。

如图2所示,是根据本发明一实施例的在消息中间件执行的消息发送方法的流程图。

步骤S210,接收来自于主动方应用的业务消息。

步骤S220,将所述业务消息存储到消息队列中。

将业务消息持久化存储到消息队列中,不向被动方应用投递该业务消息。

可以预先设置多个消息队列,每个消息队列对应一个消息主题(Topic)。消息队列的数量可以扩展。根据业务消息的消息主题,将业务消息存储到消息主题对应的消息队列中。

步骤S230,向所述主动方应用返回所述业务消息的消息存储结果,以便所述主动方应用在所述消息存储结果为消息存储成功时,执行所述业务消息对应的下一步业务操作,并返回所述下一步业务操作的操作结果。

步骤S240,接收所述主动方应用返回的所述操作结果,并在所述操作结果为操作成功时,将所述业务消息向被动方应用投递。

操作结果,包括:操作成功和操作失败。

在操作结果为操作成功时,将所述业务消息向被动方应用投递。其中,被动方应用为消费(需要处理)该业务消息的应用。被动方应用部署在被动方应用主机或者被动方应用主机集群中。

在操作结果为操作失败时,将所述业务消息从消息队列中删除。

在本发明实施例中,在使用消息中间件进行消息传输的过程中,增加了反馈机制,主动方应用在向消息中间件发送业务消息之后,消息中间件会通知主动方应用业务消息是否存储成功,主动方应用仅在消息存储成功的情况下执行下一步业务操作,主动方应用也会通知消息中间件该下一步业务操作的操作结果,消息中间件仅在操作结果为操作成功的情况下,投递业务消息,避免了主动方应用的操作失败的情况下,向被动方应用投递业务消息。

本发明实施例的消息发送方法可以独立部署,可扩展,能降低业务系统与消息系统的耦合性,可实现数据可靠的前提下确保最终一致性。

为了使本发明更加清楚,下面基于图3是根据本发明一实施例的消息发送方法的示意图,先对在主动方应用执行的消息发送方法进行进一步地描述,再对在消息中间件执行的消息发送方法进行进一步地描述。

如图4所示,是根据本发明一实施例的在主动方应用执行的消息发送方法的具体流程图。

步骤S410,向消息中间件传输消息状态为第一状态的所述业务消息;其中,所述第一状态表示所述下一步业务操作的操作结果待确认。

步骤S420,接收所述消息中间件返回的消息存储结果。

步骤S430,确定所述消息存储结果是否为消息存储成功;如果是,则执行步骤S440;如果否,则执行S470。

步骤S440,在所述消息存储结果为消息存储成功时,执行所述业务消息对应的下一步业务操作,在操作结果为操作成功时执行步骤S450,在操作结果为操作失败时执行步骤S460。

步骤S450,在所述下一步业务操作的操作结果为操作成功时,向所述消息中间件发送操作成功消息,以便所述消息中间件根据所述操作成功消息将所述业务消息的消息状态从所述第一状态调整为第二状态;其中,所述第二状态表示所述业务消息待发送。

步骤S460,在所述下一步业务操作的操作结果为操作失败时,向所述消息中间件发送操作失败消息,以便所述消息中间根据所述操作失败消息将所述业务消息从消息存储装置中删除。

步骤S470,在所述消息存储结果为消息存储失败时,禁止执行所述业务消息对应的下一步业务操作,并且结束本流程。

如图5所示,是根据本发明一实施例的在消息中间件执行的消息发送方法的具体流程图。

步骤S510,接收来自于主动方应用的业务消息;其中,所述业务消息的消息状态为第一状态;所述第一状态表示所述下一步业务操作的操作结果待确认。

步骤S520,在所述消息队列中存储所述业务消息,并且将所述业务消息的消息状态设置为第一状态。

步骤S530,向所述主动方应用返回所述业务消息的消息存储结果。

步骤S540,确定消息存储结果是否为消息存储成功;如果是,则执行步骤S550;如果否,则结束本流程。

所述主动方应用在所述消息存储结果为消息存储成功时,执行所述业务消息对应的下一步业务操作,并返回所述下一步业务操作的操作结果。

所述主动方应用在所述消息存储结果为消息存储失败时,禁止执行所述业务消息对应的下一步业务操作。

步骤S550,接收所述主动方应用返回的所述操作结果。

步骤S560,判断所述操作结果是否为操作成功;如果是,则执行步骤S570;如果否,则执行步骤S590。

步骤S570,在所述操作结果为操作成功时,将所述业务消息的消息状态从第一状态调整为第二状态;其中,所述第二状态表示所述业务消息待发送。

步骤S580,将所述消息队列中消息状态为第二状态的业务消息向被动方应用投递。

步骤S590,在所述操作结果为操作失败时,将所述业务消息从所述消息队列中删除。

针对上述的消息发送过程,本发明实施例还提供了故障应对策略。例如:业务消息发送失败,业务消息存储失败,消息存储结果反馈失败,下一步业务操作失败,下一步业务操作的操作结果反馈失败,根据操作结果处理业务消息失败,这些故障将导致业务消息发送失败,还可能会占用消息队列的存储空间,因此需要通过本实施例的故障应对策略进行故障排除。

图6是根据本发明一实施例的故障发生点的示意图。图7是根据本发明一实施例的故障排除步骤的示意图。图8是根据本发明一实施例的故障排除步骤的流程图。

步骤S810,消息中间件针对所述消息队列中消息状态为第一状态的业务消息,向所述主动方应用发送消息查询信息;其中,所述消息查询信息用于查询所述消息队列中消息状态为第一状态的业务消息对应的操作结果。

消息中间件查询消息队列中处于第一状态的业务消息;根据所述处于第一状态的业务消息,生成消息查询信息。在消息查询信息中携带每个处于第一状态的业务消息的信息。该业务消息的信息例如是业务消息的标识。

步骤S820,主动方应用接收来自于所述消息中间件的消息查询信息;其中,所述消息查询信息用于查询所述消息队列中消息状态为第一状态的业务消息对应的操作结果。

主动方应用根据消息查询信息中携带每个处于第一状态的业务消息的信息,查询每个处于第一状态的业务消息对应的操作结果,也即是查询该业务消息对应的下一步业务操作的操作结果。

如果无法查询到处于第一状态的业务消息对应的操作结果,则表示主动方应用没有执行该下一步业务操作。主动方应用没有执行该下一步业务操作的原因包括但不限于:业务消息发送失败,业务消息存储失败以及消息存储结果反馈失败。

如果可以查询到处于第一状态的业务消息对应的操作结果,则表示主动方应用已经执行该下一步业务操作。

步骤S830,主动方应用根据所述消息查询信息,查询所述消息队列中消息状态为第一状态的业务消息对应的操作结果,并将所述消息队列中消息状态为第一状态的业务消息对应的操作结果返回给所述消息中间件。

步骤S840,消息中间件接收所述主动方应用返回的所述消息队列中消息状态为第一状态的业务消息对应的操作结果。

步骤S850,消息中间件确定该操作结果是否为操作成功;如果是,则执行步骤S860;如果否,则执行步骤S870。

如果查询到处于第一状态的业务消息对应的操作结果为操作成功,则表示操作结果反馈失败,导致业务消息的消息状态没有从第一状态调整为第二状态,这时,根据主动方应用返回的查询结果,更新消息队列中该业务消息的消息状态,将该消息状态从第一状态调整为第二状态,以便该业务消息能够被正常投递给被动方应用。

步骤S860,消息中间件在所述主动方应用返回的操作结果为操作成功时,在所述消息队列中,将所述业务消息的消息状态从第一状态调整为第二状态,以便将调整为第二状态的所述业务消息向所述被动方应用投递。

步骤S870,消息中间件在所述主动方应用返回的操作结果为操作失败时,将所述业务消息从所述消息队列中删除。

如果查询到处于第一状态的业务消息对应的操作结果为操作失败,则表示业务消息尚且没有根据下一步业务操作的操作结果进行处理,这时可以将该业务消息从消息队列中删除,以便停止业务消息的发送。

本发明实施例还提供了一种设置在主动方应用的消息发送装置。如图9所示,是根据本发明一实施例的设置在主动方应用的消息发送装置的结构图。

该设置在主动方应用的消息发送装置,包括:传输模块910,第一接收模块920和执行模块930。

传输模块910,用于向消息中间件传输业务消息,以便所述消息中间件将所述业务消息存储到消息队列中。

第一接收模块920,用于接收所述消息中间件返回的消息存储结果。

执行模块930,用于在所述消息存储结果为消息存储成功时,执行所述业务消息对应的下一步业务操作,并向所述消息中间件发送所述下一步业务操作的操作结果,以便所述消息中间件在所述操作结果为操作成功时,将所述业务消息投递给被动方应用。

本发明实施例所述的装置的功能已经在上述方法实施例中进行了描述,故本发明实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此不做赘述。

本发明实施例还提供了一种设置在消息中间件的消息发送装置。如图10所示,是根据本发明一实施例的设置在消息中间件的消息发送装置的结构图。

该设置在消息中间件的消息发送装置,包括:第二接收模块1010,存储模块1020,发送模块1030和接收与投递模块1040。

第二接收模块1010,用于接收来自于主动方应用的业务消息。

存储模块1020,用于将所述业务消息存储到消息队列中。

发送模块1030,用于向所述主动方应用返回所述业务消息的消息存储结果,以便所述主动方应用在所述消息存储结果为消息存储成功时,执行所述业务消息对应的下一步业务操作,并返回所述下一步业务操作的操作结果。

接收与投递模块1040,用于接收所述主动方应用返回的所述操作结果,并在所述操作结果为操作成功时,将所述业务消息向被动方应用投递。

本发明实施例所述的装置的功能已经在上述方法实施例中进行了描述,故本发明实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此不做赘述。

本实施例提供一种消息发送设备。如图11所示,为根据本发明一实施例的消息发送设备的结构图。

在本实施例中,所述消息发送设备,包括但不限于:处理器1110、存储器1120。

所述处理器1110用于执行存储器1120中存储的消息发送程序,以实现上述在主动方应用执行的消息发送方法或者上述在消息中间件执行的消息发送方法。

所述处理器1110用于执行存储器1120中存储的在主动方应用执行的消息发送程序,以实现以下步骤:向消息中间件传输业务消息,以便所述消息中间件将所述业务消息存储到消息队列中;接收所述消息中间件返回的消息存储结果;在所述消息存储结果为消息存储成功时,执行所述业务消息对应的下一步业务操作,并向所述消息中间件发送所述下一步业务操作的操作结果,以便所述消息中间件在所述操作结果为操作成功时,将所述业务消息投递给被动方应用。

其中,所述向消息中间件传输业务消息,包括:向消息中间件传输消息状态为第一状态的所述业务消息,以便所述消息中间件在所述消息队列中存储所述业务消息,并且将所述业务消息的消息状态设置为第一状态;其中,所述第一状态表示所述下一步业务操作的操作结果待确认;所述向所述消息中间件发送所述下一步业务操作的操作结果,包括:在所述下一步业务操作的操作结果为操作成功时,向所述消息中间件发送操作成功消息,以便所述消息中间件根据所述操作成功消息将所述业务消息的消息状态从所述第一状态调整为第二状态;其中,所述第二状态表示所述业务消息待发送。

其中,所述方法还包括:接收来自于所述消息中间件的消息查询信息;其中,所述消息查询信息用于查询所述消息队列中消息状态为第一状态的业务消息对应的操作结果;根据所述消息查询信息,查询所述消息队列中消息状态为第一状态的业务消息对应的操作结果,并将所述消息队列中消息状态为第一状态的业务消息对应的操作结果返回给所述消息中间件。

其中,所述向所述消息中间件发送所述下一步业务操作的操作结果,包括:在所述下一步业务操作的操作结果为操作失败时,向所述消息中间件发送操作失败消息,以便所述消息中间根据所述操作失败消息将所述业务消息从消息存储装置中删除。

其中,在所述接收所述消息中间件返回的消息存储结果之后,所述方法还包括:在所述消息存储结果为消息存储失败时,禁止执行所述业务消息对应的下一步业务操作。

所述处理器1110用于执行存储器1120中存储的在消息中间件执行的消息发送程序,以实现以下步骤:接收来自于主动方应用的业务消息;将所述业务消息存储到消息队列中;向所述主动方应用返回所述业务消息的消息存储结果,以便所述主动方应用在所述消息存储结果为消息存储成功时,执行所述业务消息对应的下一步业务操作,并返回所述下一步业务操作的操作结果;接收所述主动方应用返回的所述操作结果,并在所述操作结果为操作成功时,将所述业务消息向被动方应用投递。

其中,所述接收来自于主动方应用的业务消息,包括:所述业务消息的消息状态为第一状态;其中,所述第一状态表示所述下一步业务操作的操作结果待确认;所述将所述业务消息存储到消息队列中,包括:在所述消息队列中存储所述业务消息,并且将所述业务消息的消息状态设置为第一状态;在所述接收所述主动方应用返回的所述操作结果之后,所述方法还包括:在所述操作结果为操作成功时,将所述业务消息的消息状态从第一状态调整为第二状态;其中,所述第二状态表示所述业务消息待发送;所述将所述业务消息向被动方应用投递,包括:将所述消息队列中消息状态为第二状态的业务消息向被动方应用投递。

其中,所述方法还包括:针对所述消息队列中消息状态为第一状态的业务消息,向所述主动方应用发送消息查询信息;其中,所述消息查询信息用于查询所述消息队列中消息状态为第一状态的业务消息对应的操作结果;接收所述主动方应用返回的所述消息队列中消息状态为第一状态的业务消息对应的操作结果;在所述主动方应用返回的操作结果为操作成功时,在所述消息队列中,将所述业务消息的消息状态从第一状态调整为第二状态,以便将调整为第二状态的所述业务消息向所述被动方应用投递。

其中,所述方法还包括:在所述接收所述主动方应用返回的所述操作结果之后,在所述操作结果为操作失败时,将所述业务消息从所述消息队列中删除。

其中,所述方法还包括:在所述业务消息存储失败时,向所述主动方应用发送消息存储失败对应的消息存储结果,以便所述主动方应用禁止执行所述业务消息对应的下一步业务操作。

本发明实施例还提供了一种计算机可读存储介质。这里的计算机可读存储介质存储有一个或者多个程序。其中,计算机可读存储介质可以包括易失性存储器,例如随机存取存储器;存储器也可以包括非易失性存储器,例如只读存储器、快闪存储器、硬盘或固态硬盘;存储器还可以包括上述种类的存储器的组合。

当计算机可读存储介质中一个或者多个程序可被一个或者多个处理器执行,以实现上述在主动方应用执行的消息发送方法或者上述在消息中间件执行的消息发送方法。由于在主动方应用执行的消息发送方法以及在消息中间件执行的消息发送方法已经在上面进行了详细描述,故在此不做赘述。

以上所述仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。

相关技术
  • 一种消息发送方法、装置、设备和计算机可读存储介质
  • 消息发送方法及装置、计算机可读存储介质、电子设备
技术分类

06120112533602