一种消息拦截重发的方法及系统
技术领域
本申请涉及计算机领域,尤其涉及一种消息拦截的方法及系统。
背景技术
目前,随着银行和金融行业的不断发展,贷款业务已经渐渐普及到广大人民群众的日常生活中,各类贷款公司也逐渐出现于人们的视线之中。
为了适应大众需求,电商网站普遍地选择与金融机构合作。当用户根据需求提出借款申请购买某电商网站的产品时,电商网站将借款申请发送给金融机构,金融机构再发给筛选出的资方发送信用审核申请,资方通过后才会进行放款。在上述流程中,由于牵涉到多方系统,消息往往会出现丢失或发送失败的情况,比如资方系统仅限工作时间进行信用审核,资方系统仅限白天进行放款、资方系统临时维护、电商网站仅限固定时间支持分期付款等等,降低了用户的使用体验。
发明内容
本申请提供了一种消息拦截重发的方法,将暂时无法处理的消息拦截并放入消息库中,等待下一次的重新发送,从而确保了消息传递的可靠性。
第一方面,提供了一种消息拦截的方法,所述方法包括以下步骤:
目标业务处理程序监听消息程序中的目标业务消息队列,获取目标业务消息,其中,不同的业务处理程序对应不同的业务消息队列;
根据目标拦截配置,使用拦截器对所述目标业务消息进行拦截,并将所述目标业务消息放入消息数据库中,其中,所述目标拦截配置是所述目标业务处理程序预先从数据库中的拦截配置表中读取并缓存的配置;
向所述消息程序发送所述目标业务消息。
可选地,向所述消息程序发送所述目标业务消息之前,所述方法还包括:
监听所述消息程序中的目标配置更新消息队列,获取目标配置更新消息,其中,所述配置更新消息队列是所述消息程序接收到重发消息申请后,根据修改后的拦截配置表生成的,所述修改后的拦截配置表是根据配置更新请求进行修改的,不同的配置更新消息队列对应不同的业务处理程序;
根据所述目标配置更新消息,重新读取所述修改后的拦截配置表,对所述目标拦截配置进行更新,使得所述目标拦截配置的生效类型更新为不生效。
可选地,所述目标业务处理程序包括一个或者多个服务器,根据所述目标配置更新消息,重新读取所述修改后的拦截配置表,对所述目标拦截配置进行更新包括:
从数据库中读取实际配置更新队列名称列表,其中,所述实际配置更新队列名称列表包括所述目标业务处理程序的所有服务器的IP地址信息以及对应的实际处理的业务信息;
根据所述实际配置更新队列名称列表,将所述目标配置更新消息放入对应的目标实际配置更新队列中;
向所述消息程序发送所述目标实际配置更新消息队列;
目标服务器监听所述消息程序中的目标实际配置更新消息队列,获取目标服务器更新消息,其中,所述目标实际配置更新消息队列的名称包含所述目标服务器的IP地址;
目标服务器根据所述目标服务器更新消息,重新读取所述修改后的拦截配置表,对所述目标拦截配置进行更新,使得所述目标拦截配置的生效类型更新为不生效。
可选地,根据目标拦截配置,使用拦截器对所述目标业务消息进行拦截,并将所述目标业务消息放入消息数据库中包括:
根据所述目标拦截配置,确认所述目标业务消息所属的目标业务消息队列的拦截类型和生效类型,其中,所述目标拦截配置至少包括拦截时间段、拦截类型、生效类型以及业务消息队列名称;
在所述目标业务消息队列的生效类型为生效,且当前时间处于所述目标业务消息队列的拦截时间段的情况下,根据所述拦截类型对所述目标业务消息队列进行处理,其中,所述拦截类型包括拦截消息和舍弃消息,所述拦截消息包括将所述目标业务消息放入消息数据库。
可选地,根据所述目标拦截配置,确认所述目标业务消息所属的目标业务消息队列的拦截类型和生效类型之后,所述方法还包括:
在所述目标业务消息队列的生效类型为不生效的情况下,处理所述目标业务消息;
在所述目标业务消息队列的生效类型为生效,且当前时间不处于所述目标业务消息队列的拦截时间段的情况下,处理所述目标业务消息。
第二方面,提供了一种消息拦截的系统,包括获取单元、拦截单元以及发送单元,其中,
所述获取单元用于目标业务处理程序监听消息程序中的目标业务消息队列,获取目标业务消息,其中,不同的业务处理程序对应不同的业务消息队列;
所述拦截单元用于根据目标拦截配置,使用拦截器对所述目标业务消息进行拦截,并将所述目标业务消息放入消息数据库中,其中,所述目标拦截配置是所述目标业务处理程序预先从数据库中的拦截配置表中读取并缓存的配置;
所述发送单元用于向所述消息程序发送所述目标业务消息。
可选地,所述系统还包括更新单元,
所述获取单元还用于监听所述消息程序中的目标配置更新消息队列,获取目标配置更新消息,其中,所述配置更新消息队列是所述消息程序接收到重发消息申请后,根据修改后的拦截配置表生成的,所述修改后的拦截配置表是根据配置更新请求进行修改的,不同的配置更新消息队列对应不同的业务处理程序;
所述更新单元用于根据所述目标配置更新消息,重新读取所述修改后的拦截配置表,对所述目标拦截配置进行更新,使得所述目标拦截配置的生效类型更新为不生效。
可选地,所述业务处理程序包括一个或者多个服务器,
所述更新单元具体用于从数据库中读取实际配置更新队列名称列表,其中,所述实际配置更新队列名称列表包括所述目标业务处理程序的所有服务器的IP地址信息以及对应的实际处理的业务信息;
所述更新单元具体用于根据所述实际配置更新队列名称列表,将所述目标配置更新消息放入对应的目标实际配置更新队列中;
所述更新单元具体用于向所述消息程序发送所述目标实际配置更新消息队列;
所述更新单元具体用于目标服务器监听所述消息程序中的目标实际配置更新消息队列,获取目标服务器更新消息,其中,所述目标实际配置更新消息队列的名称包含所述目标服务器的IP地址;
所述更新单元具体用于目标服务器根据所述目标服务器更新消息,重新读取所述修改后的拦截配置表,对所述目标拦截配置进行更新,使得所述目标拦截配置的生效类型更新为不生效。
可选地,所述拦截单元具体用于根据所述目标拦截配置,确认所述目标业务消息所属的目标业务消息队列的拦截类型和生效类型,其中,所述目标拦截配置至少包括拦截时间段、拦截类型、生效类型以及业务消息队列名称;
所述拦截单元具体用于在所述目标业务消息队列的生效类型为生效,且当前时间处于所述目标业务消息队列的拦截时间段的情况下,根据所述拦截类型对所述目标业务消息进行处理,其中,所述拦截类型包括拦截消息和舍弃消息,所述拦截消息包括将所述目标业务消息放入消息数据库。
可选地,所述系统还包括处理单元,
所述处理单元用于在所述拦截单元根据所述目标拦截配置,确认所述目标业务消息所属的目标业务消息队列的拦截类型和生效类型之后,所述目标业务消息队列的生效类型为不生效的情况下,处理所述目标业务消息;
所述处理单元还用于在所述目标业务消息队列的生效类型为生效,且当前时间不处于所述目标业务消息队列的拦截时间段的情况下,处理所述目标业务消息。
基于本申请提供的消息拦截重发的方法及系统,通过目标业务处理程序监听消息程序中的目标业务消息队列,获取目标业务消息,从而根据目标拦截配置,使用拦截器对所述目标业务消息进行拦截,并将所述目标业务消息放入消息数据库中。使得当前消费端无法处理的消息可以预先拦截下来放入消息数据库中,在消费端可以处理时,再进行消息的重发,从而确保了消息传递的可靠性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的一种消息拦截重发的方法的流程示意图;
图2是本申请提供的一种目标业务处理程序从目标业务消息队列中获取目标业务消息的流程示意图;
图3是本申请提供的一种消息拦截重发的方法中拦截器处理所述目标业务消息的流程示意图;
图4是本申请提供的一种消息拦截重发的方法的服务器环境描述图;
图5是本申请提供的一种消息拦截重发的方法中的配置更新步骤的流程示意图;
图6是本申请提供的一种消息拦截重发的系统的结构示意图;
图7是本申请提供的一种电子设备的结构示意图。
具体实施方式
下面通过具体实施方式结合附图对本申请作进一步详细说明。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其他方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或描述,这是为了避免本申请的核心部分被过多的描述所淹没。对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
需要说明的是,在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
图1是本申请实施例提供的一种消息拦截重发的方法的流程示意图。由图1可知,本申请实施例的消息拦截的方法包括以下步骤:
S101:目标业务处理程序监听消息程序中的目标业务消息队列,获取目标业务消息。
在本申请具体的实施方式中,业务处理程序可以是一个或者多个,不同的业务处理程序处理不同类型的业务。以一个借贷平台系统为例,业务处理程序可以分为核心处理程序以及资方应用处理程序,其中,核心处理程序用于处理借贷平台与其他内部系统之间的业务交互,例如接收电商平台的客户信审信息、接收业务核心系统发送的放款申请信息、接收客户平台发送的更换绑卡请求信息等等;资方应用处理程序用于处理与资方交互的业务申请,例如向资方申请放款或者向资方申请信用审核等等,不同的资方应用处理程序与不同的资方一一对接。应理解,上述举例仅仅与用于说明,本申请提供的消息拦截方法中的业务处理程序可以包括更多数量以及更多种类,与业务处理程序对接的可以是资方应用,还可以是用于合作处理其他业务的第三方应用,此处不作具体限定。
在本申请具体的实施方式中,不同的业务处理程序对应不同的业务消息队列,所述业务消息队列是消息程序接收到业务处理请求后生成的消息队列,不同类型的业务处理请求对应不同的业务消息队列,消息程序接收到的业务处理请求可以是由电商平台发送的业务处理请求,还可以是其他发送端发送的业务处理请求,本申请不作具体限定。具体地,步骤S101的分解步骤可以是如图2所示,图2中的消息程序中包括多个业务消息队列1A、2B、3B、4C,其中,业务消息队列1A对应业务处理程序A,业务消息队列2B对应业务处理程序B,业务消息队列3B对应业务处理程序B,业务消息队列4C对应业务处理程序C,业务处理程序A对应业务A,业务处理程序B对应业务B,业务处理程序C对应业务C,因此,业务处理程序A监听消息程序中的业务消息队列1A,从业务消息队列1A中获取对应业务A的业务消息,业务处理程序B从业务消息队列2B中选取对应业务B的业务消息,业务处理程序C从业务消息队列3C中选取对应业务C的业务消息。可以理解的是,使用消息程序作为中间程序,可以使得当新业务F接入时,只需要增加一个新的业务处理程序F用于处理业务F,消息程序可以直接将对应业务F的业务处理请求写入消息队列,而不需要对整个系统新增接口进行升级,可以大大减少系统开发及测试人员升级系统所消耗的时间和人力,有助于快速对接新业务,确保系统流程的稳定性。应理解,上述举例以及图2仅仅用于说明,并不能构成具体限定。
在本申请具体的实施方式中,消息程序可以是以消息队列(Message Queue,MQ)为核心技术的MQ消息服务器,消息队列可以是异步消息队列(Zero MQ,ZMQ),Rabbit MQ,Active MQ,Apollo,Kafka,Rocket MQ等等,此处不作具体限定。可以理解的是,当消息并发量增大时,所有消息直接向消费端发送,往往会发生系统拥堵。例如大量的插入申请、更新申请等消息同时到达数据库,直接导致无数的行锁表锁,甚至最后请求会堆积过多,导致数据库连接异常。而使用基于MQ为核心技术的消息程序作为中间程序,可以使得在高并发环境下,系统慢慢按照自身能处理的并发量从消息程序中慢慢拉取消息,从而能够异步处理请求,缓解系统的压力,提高系统的处理效率。应理解,上述举例仅用于说明,并不能构成具体限定。
S102:根据目标拦截配置,使用拦截器对所述目标业务消息进行拦截,并将所述目标业务消息放入消息数据库中,其中,所述目标拦截配置是所述目标业务处理程序预先从数据库中的拦截配置表中读取并缓存的配置。
在本申请具体的实施方式中,根据目标拦截配置,使用拦截器对所述目标业务消息进行拦截,并将所述目标业务消息放入消息数据库中包括:根据所述目标拦截配置,确认所述目标业务消息所属的目标业务消息队列的拦截类型和生效类型,其中,所述拦截配置表至少包括拦截时间段、拦截类型、生效类型以及业务消息队列名称;在所述目标业务消息队列的生效类型为生效,且当前时间处于所述目标业务消息队列的拦截时间段的情况下,根据所述拦截类型对所述目标业务消息队列进行处理,其中,所述拦截类型包括拦截消息和舍弃消息,所述拦截消息包括将所述目标业务消息放入消息数据库。可以理解的是,拦截配置表存储于数据库中,但是目标业务处理程序将会缓存所述目标业务消息的目标拦截配置,目标业务处理程序在对目标业务消息进行拦截时,仅需要根据缓存中的拦截配置进行拦截处理。并且,拦截配置表还可以包括其他字段,例如,表1是本申请提供的拦截配置表支持的字段示例表。应理解,表1仅用于举例说明,本申请提供的消息拦截方法中的拦截配置表还可以根据业务需求支持更多的字段,本申请不作具体限定。
表1拦截配置表支持的字段示例表
在本申请具体的实施方式中,根据所述目标拦截配置,确认所述目标业务消息所属的目标业务消息队列的拦截类型和生效类型之后,所述方法还包括:在所述目标业务消息队列的生效类型为不生效的情况下,处理所述目标业务消息;在所述目标业务消息队列的生效类型为生效,且当前时间不处于所述目标业务消息队列的拦截时间段的情况下,处理所述目标业务消息。图3是本申请提供的一种消息拦截的方法中拦截器处理所述目标业务消息的流程示意图,由图3可知,目标处理程序在获取目标业务消息后,首先在缓存中获取业务消息队列名称与目标业务消息所属队列名称相同的目标拦截配置,其次根据目标拦截配置中的生效类型判断所述目标业务消息的生效类型,然后判断当前时间是否处于目标拦截配置中的目标拦截时间段,最后根据目标拦截配置中的拦截类型判断所述目标业务消息的拦截类型。可以理解的是,目标拦截时间段可以是根据资方的服务窗口期设定的,例如,某资方A每日的8:00—23:00为资方A放款时间段,每日的8:00—18:00为资方A信用审核时间段,因此,资方A的放款申请业务消息队列在拦截配置中对应的拦截时间段应为23:00—24:00以及0:00—8:00,资方A的信用审核申请业务消息队列在拦截配置中对应的拦截时间段应为18:00—24:00以及0:00—8:00。并且,在某资方系统需要维护或升级,无法接收任何消息的情况下,所述拦截配置中某业务消息队列的拦截时间段还可以为空,也就是说,无论何时都拦截该业务消息队列。应理解,上述举例仅用于举例说明,并不能构成具体限定。
S103:向所述消息程序发送所述目标业务消息
在本申请具体的实施方式中,向所述消息程序发送所述目标业务消息之前,所述方法还包括:监听所述消息程序中的目标配置更新消息队列,获取目标配置更新消息,其中,所述配置更新消息队列是所述消息程序接收到重发消息申请后,根据修改后的拦截配置表生成的,所述修改后的拦截配置表是根据配置更新请求进行修改的,不同的配置更新消息队列对应不同的业务处理程序;
根据所述目标配置更新消息,重新读取所述修改后的拦截配置表,对所述目标拦截配置进行更新,使得所述目标拦截配置的生效类型更新为不生效。应理解,如果不将配置更新为失效,根据拦截时间段进行拦截的业务不会受到影响,但是拦截时间段为空的业务将会受到影响,例如,如果是由于资方系统在非工作时间无法处理而拦截的消息,该类消息的拦截时间为一个具体的时间段,也就是说,在时间段内被拦截,其他时间不被拦截,因此不需要将配置跟新为失效,拦截器在拦截时间段仍能正常拦截信息;但是,如果是由于资方系统维护升级原因而拦截的消息,该类消息的拦截时间为空,也就是说,不论什么时候发送都会被拦截,重发后消息仍会被拦截,因此需要将配置修改为失效后才能重发。并且,拦截器在工作时,会将消息拦截的配置缓存在程序中,从而省去重复从数据库调取配置表的步骤,因此,在重发之前将配置失效,可以将程序中缓存的原有配置清除,使得拦截程序不再触发,同时也省去了目标业务处理程序中的拦截器再根据目标拦截配置进行拦截判断的时间,从而提高消息处理效率。
在本申请具体的实施方式中,所述目标业务处理程序包括一个或者多个服务器,根据所述目标配置更新消息,重新读取所述修改后的拦截配置表,对所述目标拦截配置进行更新包括:从数据库中读取实际配置更新队列名称列表,其中,所述实际配置更新队列名称列表包括所述目标业务处理程序的所有服务器的IP地址信息以及对应的实际处理的业务信息;根据所述实际配置更新队列名称列表,将所述目标配置更新消息放入对应的目标实际配置更新队列中;向所述消息程序发送所述目标实际配置更新消息队列;目标服务器监听所述消息程序中的目标实际配置更新消息队列,获取目标服务器更新消息,其中,所述目标实际配置更新消息队列的名称包含所述目标服务器的IP地址;目标服务器根据所述目标服务器更新消息,重新读取所述修改后的拦截配置表,对所述目标拦截配置进行更新,使得所述目标拦截配置的生效类型更新为不生效。下面仍以使用本申请提供的消息拦截重发方法的借贷平台系统为例,对本申请提供的消息拦截重发的方法进行说明,图4是本申请提供的一种消息拦截重发的方法的服务器环境描述图,根据图4可知,电商平台与借贷平台相连,借贷平台与资方平台相连,其中,借贷平台包括一个消息程序和多个业务处理程序,部分业务处理程序与对应的资方平台相连,例如图4中的业务处理程序2、业务处理程序4以及业务处理程序5,部分业务处理程序用于处理借贷平台内部的业务,因此不与其他资方平台相连,例如图4中的业务处理程序1以及业务处理程序3。消息程序将来自电商平台的消息分发给多个业务处理程序,每个业务处理程序包括多个服务器,每个消息只能被一个服务器消费。因此,本申请提供的消息拦截重发方法在进行拦截配置表的更新步骤时,首先确认需要更新拦截配置表的目标业务处理程序,其次确认需要更新拦截配置的具体的目标服务器。应理解,图4所述的服务器环境仅仅用于举例说明,并不能构成具体限定,本申请提供的消息拦截重发的方法还可以使用在其他包括但不限于电商平台作为发送端、资方平台作为消费端的服务器环境中。
在本申请具体的实施方式中,数据库中的拦截配置表的修改可以是运维人员手动或者定时触发的,也就是说,运维人员手动对数据库中的某一队列的拦截配置进行修改,例如,某资方系统维护,暂时无法接收任何消息,运维人员可以手动在数据库中修改该资方对应的业务消息队列的拦截配置。或者设置定时重发功能,使得该配置在固定时间自动修改为失效或有效,例如,每日的8:00—18:00为资方A信用审核时间段,那么资方A的信用审核消息将在每日的18:00—24:00以及0:00—8:00被拦截,因此运维人员可以将重发时间设定为每日的09:00,也就是说,每日09:00时,资方A的信用审核消息队列的生效类型更新为失效,因此设定每日的18:00,将资方A的信用审核消息队列的生效类型更新为有效,从而保证了资方A的信用审核消息在工作时间不被拦截,在非工作时间被拦截。应理解,拦截配置表修改后,消息程序就会触发消息重发功能,生成配置配置更新消息队列,使得对应的各个业务处理程序名下的各个服务器删除之前的配置缓存,重新读取修改后的拦截配置表,对拦截配置进行更新。应理解,上述举例仅用于说明,本申请不作具体限定。
优选地,图5是本申请提供的消息拦截重发方法中的配置更新步骤的流程示意图。由图5可知,消息程序接收到重发申请后,生成多个业务程序的配置更新消息队列,每个队列中包括对应业务处理程序的配置更新消息,每个业务处理程序监听消息程序中与自己对应的配置更新消息队列,从配置更新消息队列中获取到配置更新消息后,每个业务处理程序在数据库中读取实际配置更新队列名称列表,查询自己所有的服务器的IP地址,确定每个配置更新消息由哪个服务器去执行,然后根据实际配置更新队列名称列表,将每个配置更新消息放入对应的实际配置更新队列中,再将实际配置更新队列发送给消息程序,每个实际配置更新队列名称中包含对应服务器的地址字段,每个服务器监听消息程序中与自己IP地址对应的实际配置更新消息队列,获取服务器配置更新消息后,执行配置更新的操作。应理解,图5仅用于举例说明,并不能构成具体限定。
上述方法中,通过目标业务处理程序监听消息程序中的目标业务消息队列,获取目标业务消息,从而根据目标拦截配置,使用拦截器对所述目标业务消息进行拦截,并将所述目标业务消息放入消息数据库中。使得当前消费端无法处理的消息可以预先拦截下来放入消息数据库中,在消费端可以处理时,再进行消息的重发,从而确保了消息传递的可靠性。
图6是本申请提供的一种消息拦截重发的系统。由图6可知,本申请提供的消息拦截重发的系统包括获取单元610、拦截单元620、发送单元630、更新单元640以及处理单元650.
所述获取单元610用于目标业务处理程序监听消息程序中的目标业务消息队列,获取目标业务消息。
在本申请具体的实施方式中,业务处理程序可以是一个或者多个,不同的业务处理程序处理不同类型的业务。以一个借贷平台系统为例,业务处理程序可以分为核心处理程序以及资方应用处理程序,其中,核心处理程序用于处理借贷平台与其他内部系统之间的业务交互,例如接收电商平台的客户信审信息、接收业务核心系统发送的放款申请信息、接收客户平台发送的更换绑卡请求信息等等;资方应用处理程序用于处理与资方交互的业务申请,例如向资方申请放款或者向资方申请信用审核等等,不同的资方应用处理程序与不同的资方一一对接。应理解,上述举例仅仅与用于说明,本申请提供的消息拦截方法中的业务处理程序可以包括更多数量以及更多种类,与业务处理程序对接的可以是资方应用,还可以是用于合作处理其他业务的第三方应用,此处不作具体限定。在本申请具体的实施方式中,不同的业务处理程序对应不同的业务消息队列,所述业务消息队列是消息程序接收到业务处理请求后生成的消息队列,不同类型的业务处理请求对应不同的业务消息队列,消息程序接收到的业务处理请求可以是由电商平台发送的业务处理请求,还可以是其他发送端发送的业务处理请求,本申请不作具体限定。具体地,步骤S101的分解步骤可以是如图2所示,图2中的消息程序中包括多个业务消息队列1A、2B、3B、4C,其中,业务消息队列1A对应业务处理程序A,业务消息队列2B对应业务处理程序B,业务消息队列3B对应业务处理程序B,业务消息队列4C对应业务处理程序C,业务处理程序A对应业务A,业务处理程序B对应业务B,业务处理程序C对应业务C,因此,业务处理程序A监听消息程序中的业务消息队列1A,从业务消息队列1A中获取对应业务A的业务消息,业务处理程序B从业务消息队列2B中选取对应业务B的业务消息,业务处理程序C从业务消息队列3C中选取对应业务C的业务消息。可以理解的是,使用消息程序作为中间程序,可以使得当新业务F接入时,只需要增加一个新的业务处理程序F用于处理业务F,消息程序可以直接将对应业务F的业务处理请求写入消息队列,而不需要对整个系统新增接口进行升级,可以大大减少系统开发及测试人员升级系统所消耗的时间和人力,有助于快速对接新业务,确保系统流程的稳定性。应理解,上述举例以及图2仅仅用于说明,并不能构成具体限定。
在本申请具体的实施方式中,消息程序可以是以消息队列(Message Queue,MQ)为核心技术的MQ消息服务器,消息队列可以是异步消息队列(Zero MQ,ZMQ),Rabbit MQ,Active MQ,Apollo,Kafka,Rocket MQ等等,此处不作具体限定。可以理解的是,当消息并发量增大时,所有消息直接向消费端发送,往往会发生系统拥堵。例如大量的插入申请、更新申请等消息同时到达数据库,直接导致无数的行锁表锁,甚至最后请求会堆积过多,导致数据库连接异常。而使用基于MQ为核心技术的消息程序作为中间程序,可以使得在高并发环境下,系统慢慢按照自身能处理的并发量从消息程序中慢慢拉取消息,从而能够异步处理请求,缓解系统的压力,提高系统的处理效率。应理解,上述举例仅用于说明,并不能构成具体限定。
所述拦截单元620用于根据目标拦截配置,使用拦截器对所述目标业务消息进行拦截,并将所述目标业务消息放入消息数据库中,其中,所述目标拦截配置是所述目标业务处理程序预先从数据库中的拦截配置表中读取并缓存的配置。
在本申请具体的实施方式中,所述拦截单元620具体用于根据所述目标拦截配置,确认所述目标业务消息所属的目标业务消息队列的拦截类型和生效类型,其中,所述目标拦截配置至少包括拦截时间段、拦截类型、生效类型以及业务消息队列名称;所述拦截单元620具体用于在所述目标业务消息队列的生效类型为生效,且当前时间处于所述目标业务消息队列的拦截时间段的情况下,根据所述拦截类型对所述目标业务消息进行处理,其中,所述拦截类型包括拦截消息和舍弃消息,所述拦截消息包括将所述目标业务消息放入消息数据库。可以理解的是,拦截配置表存储于数据库中,但是目标业务处理程序将会缓存所述目标业务消息的目标拦截配置,目标业务处理程序在对目标业务消息进行拦截时,仅需要根据缓存中的拦截配置进行拦截处理。并且,拦截配置表还可以包括其他字段,例如,表1是本申请提供的拦截配置表支持的字段示例表。应理解,表1仅用于举例说明,本申请提供的消息拦截方法中的拦截配置表还可以根据业务需求支持更多的字段,本申请不作具体限定。
在本申请具体的实施方式中,根据所述目标拦截配置,确认所述目标业务消息所属的目标业务消息队列的拦截类型和生效类型之后,所述方法还包括:在所述目标业务消息队列的生效类型为不生效的情况下,处理所述目标业务消息;在所述目标业务消息队列的生效类型为生效,且当前时间不处于所述目标业务消息队列的拦截时间段的情况下,处理所述目标业务消息。图3是本申请提供的一种消息拦截的方法中拦截器处理所述目标业务消息的流程示意图,由图3可知,目标处理程序在获取目标业务消息后,首先在缓存中获取业务消息队列名称与目标业务消息所属队列名称相同的目标拦截配置,其次根据目标拦截配置中的生效类型判断所述目标业务消息的生效类型,然后判断当前时间是否处于目标拦截配置中的目标拦截时间段,最后根据目标拦截配置中的拦截类型判断所述目标业务消息的拦截类型。可以理解的是,目标拦截时间段可以是根据资方的服务窗口期设定的,例如,某资方A每日的8:00—23:00为资方A放款时间段,每日的8:00—18:00为资方A信用审核时间段,因此,资方A的放款申请业务消息队列在拦截配置中对应的拦截时间段应为23:00—24:00以及0:00—8:00,资方A的信用审核申请业务消息队列在拦截配置中对应的拦截时间段应为18:00—24:00以及0:00—8:00。并且,在某资方系统需要维护或升级,无法接收任何消息的情况下,所述拦截配置中某业务消息队列的拦截时间段还可以为空,也就是说,无论何时都拦截该业务消息队列。应理解,上述举例仅用于举例说明,并不能构成具体限定。
所述发送单元630用于向所述消息程序发送所述目标业务消息队列。
在本申请具体的实施方式中,所述系统还包括更新单元640,所述获取单元610还用于监听所述消息程序中的目标配置更新消息队列,获取目标配置更新消息,其中,所述配置更新消息队列是所述消息程序接收到重发消息申请后,根据修改后的拦截配置表生成的,所述修改后的拦截配置表是根据配置更新请求进行修改的,不同的配置更新消息队列对应不同的业务处理程序;所述更新单,640用于根据所述目标配置更新消息,重新读取所述修改后的拦截配置表,对所述目标拦截配置进行更新,使得所述目标拦截配置的生效类型更新为不生效。应理解,如果不将配置更新为失效,根据拦截时间段进行拦截的业务不会受到影响,但是拦截时间段为空的业务将会受到影响,例如,如果是由于资方系统在非工作时间无法处理而拦截的消息,该类消息的拦截时间为一个具体的时间段,也就是说,在时间段内被拦截,其他时间不被拦截,因此不需要将配置跟新为失效,拦截器在拦截时间段仍能正常拦截信息;但是,如果是由于资方系统维护升级原因而拦截的消息,该类消息的拦截时间为空,也就是说,不论什么时候发送都会被拦截,重发后消息仍会被拦截,因此需要将配置修改为失效后才能重发。并且,拦截器在工作时,会将消息拦截的配置缓存在程序中,从而省去重复从数据库调取配置表的步骤,因此,在重发之前将配置失效,可以将程序中缓存的原有配置清除,使得拦截程序不再触发,同时也省去了拦截器再根据目标配置进行拦截判断处理的时间,从而提高消息处理效率。
在本申请具体的实施方式中,所述业务处理程序包括一个或者多个服务器,
所述更新单元具体用于从数据库中读取实际配置更新队列名称列表,其中,所述实际配置更新队列名称列表包括所述目标业务处理程序的所有服务器的IP地址信息以及对应的实际处理的业务信息;所述更新单元具体用于根据所述实际配置更新队列名称列表,将所述目标配置更新消息放入对应的目标实际配置更新队列中;所述更新单元具体用于向所述消息程序发送所述目标实际配置更新消息队列;所述更新单元具体用于目标服务器监听所述消息程序中的目标实际配置更新消息队列,获取目标服务器更新消息,其中,所述目标实际配置更新消息队列的名称包含所述目标服务器的IP地址;所述更新单元具体用于目标服务器根据所述目标服务器更新消息,重新读取所述修改后的拦截配置表,对所述目标拦截配置进行更新,使得所述目标拦截配置的生效类型更新为不生效。下面仍以使用本申请提供的消息拦截重发方法的借贷平台系统为例,对本申请提供的消息拦截重发的方法进行说明,图4是本申请提供的一种消息拦截重发的方法的服务器环境描述图,根据图4可知,电商平台与借贷平台相连,借贷平台与资方平台相连,其中,借贷平台包括一个消息程序和多个业务处理程序,部分业务处理程序与对应的资方平台相连,例如图4中的业务处理程序2、业务处理程序4以及业务处理程序5,部分业务处理程序用于处理借贷平台内部的业务,因此不与其他资方平台相连,例如图4中的业务处理程序1以及业务处理程序3。消息程序将来自电商平台的消息分发给多个业务处理程序,每个业务处理程序包括多个服务器,每个消息只能被一个服务器消费。因此,本申请提供的消息拦截重发方法在进行拦截配置表的更新步骤时,首先确认需要更新拦截配置的目标业务处理程序,其次确认需要更新拦截配置表的具体的目标服务器。应理解,图4所述的服务器环境仅仅用于举例说明,并不能构成具体限定,本申请提供的消息拦截重发的方法还可以使用在其他包括但不限于电商平台作为发送端、资方平台作为消费端的服务器环境中。
在本申请具体的实施方式中,数据库中的拦截配置表的修改可以是运维人员手动或者定时触发的,也就是说,运维人员手动对数据库中的某一队列的拦截配置进行修改,例如,某资方系统维护,暂时无法接收任何消息,运维人员可以手动在数据库中修改该资方对应的业务消息队列的拦截配置。或者设置定时重发功能,使得该配置在固定时间自动修改为失效或有效,例如,每日的8:00—18:00为资方A信用审核时间段,那么资方A的信用审核消息将在每日的18:00—24:00以及0:00—8:00被拦截,因此运维人员可以将重发时间设定为每日的09:00,也就是说,每日09:00时,资方A的信用审核消息队列的生效类型更新为失效,因此设定每日的18:00,将资方A的信用审核消息队列的生效类型更新为有效,从而保证了资方A的信用审核消息在工作时间不被拦截,在非工作时间被拦截。应理解,拦截配置表修改后,消息程序就会触发消息重发功能,生成配置配置更新消息队列,使得对应的各个业务处理程序名下的各个服务器删除之前的配置缓存,重新读取修改后的拦截配置表,对拦截配置进行更新。应理解,上述举例仅用于说明,本申请不作具体限定。
优选地,图5是本申请提供的消息拦截重发方法中的配置更新步骤的流程示意图。由图5可知,消息程序接收到重发申请后,生成多个业务程序的配置更新消息队列,每个队列中包括对应业务处理程序的配置更新消息,每个业务处理程序监听消息程序中与自己对应的配置更新消息队列,从配置更新消息队列中获取到配置更新消息后,每个业务处理程序在数据库中读取实际配置更新队列名称列表,查询自己所有的服务器的IP地址,确定每个配置更新消息由哪个服务器去执行,然后根据实际配置更新队列名称列表,将每个配置更新消息放入对应的实际配置更新队列中,再将实际配置更新队列发送给消息程序,每个实际配置更新队列名称中包含对应服务器的地址字段,每个服务器监听消息程序中与自己IP地址对应的实际配置更新消息队列,获取服务器配置更新消息后,执行配置更新的操作。应理解,图5仅用于举例说明,并不能构成具体限定。
上述系统中,通过目标业务处理程序监听消息程序中的目标业务消息队列,获取目标业务消息,从而根据拦截配置表,使用拦截器对所述目标业务消息进行拦截,并将所述目标业务消息放入消息数据库中。使得当前消费端无法处理的消息可以预先拦截下来放入消息数据库中,在消费端可以处理时,再进行消息的重发,从而确保了消息传递的可靠性。
图7是本申请实施例提供的一种电子设备结构示意框图。如图7所示,本实施例中的电子设备可以包括:一个或多个处理器701;一个或多个输入设备702,一个或多个输出设备703和存储器704。上述处理器701、输入设备702、输出设备703和存储器704通过总线705连接。存储器702用于存储计算机程序,所述计算机程序包括程序指令,处理器701用于执行存储器702存储的程序指令。
在本申请实施例中,所称处理器701可以是中央处理单元(Central ProcessingUnit,CPU),该处理器还可以是其他通用处理器、DSP、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
输入设备702可以包括触控板、指纹采传感器(用于采集用户的指纹信息和指纹的方向信息)、麦克风等,输出设备703可以包括显示器(LCD等)、扬声器等。
存储器704可以包括易失性存储器,例如RAM;存储器也可以包括非易失性存储器,例如只读存储器(Read-Only Memory,ROM)、快闪存储器、硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD),存储器还可以包括上述种类的存储器的组合。存储器704可以采用集中式存储,也可以采用分布式存储,此处不作具体限定。可以理解的是,存储器704用于存储计算机程序,例如:计算机程序指令等。在本申请实施例中,存储器704可以向处理器701提供指令和数据。
具体实现中,本申请实施例中所描述的处理器701、输入设备702、输出设备703、存储器704、总线705可执行本申请提供的消息拦截重发的方法的任一实施例中所描述的实现方式,在此不再赘述。
在本申请的另一实施例中提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被处理器执行时实现本申请提供的消息拦截重发的方法的任一实施例中所描述的实现方式,在此不再赘述。
所述计算机可读存储介质可以是前述任一实施例所述的终端的内部存储单元,例如终端的硬盘或内存。所述计算机可读存储介质也可以是所述终端的外部存储设备,例如所述终端上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,所述计算机可读存储介质还可以既包括所述终端的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述终端所需的其他程序和数据。所述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的设备和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的电子设备、系统和方法,可以通过其它的方式实现。例如,以上所描述的电子设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、系统或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。