象,并将该消息对象发送至消息层,进而触发消息层为消息对象选择消息任务处理对象,从而触发任务处理层控制该消息任务处理对象将消息对象发送至消息组件,以使消息组件将消息对象发送至消息接收方。可见,本实施例的异步通信框架中,接口层根据上层应用的请求生成消息对象,消息层及任务处理层实现消息对象的发送,从而实现了消息接收和发送的分尚,提尚了应用的响应能力。
[0044]另外,异步通信框架的接口层提供的是调用接口,上层应用并不需要构建报文,只需调用接口即可实现消息的发送,对于应用来讲,简单方便,易用性更高。并且,若想要增加或删除一种消息类型,只需在接口层新增或删除相应的接口即可,扩展性更高。
[0045]在实际应用中,如图3所示,上述消息发送方法实施例1中的步骤S102(触发接口层依据消息发送请求中的消息参数,生成对应的消息对象,并将消息对象发送至消息层)的具体实现方式可以包括步骤S301?步骤S304。
[0046]步骤S301:触发接口层从消息发送请求中,提取消息模板标识及预设关键参数属性值。
[0047]其中,应用发送的消息发送请求中,包含消息参数。消息参数可以具体包含:消息模板标识及预设关键参数属性值,当然,还可以包含其他内容,如发送短信时,还可以包含接收方的手机号码。
[0048]在实施中,接口层为接口设置若干个不同的消息模板,消息模板可以认为是配置文件,每个消息模板具有各自的消息模板标识。例如,提醒支付的消息模板的消息模板标识为011,通知支付成功的消息模板的消息模板标识为002。
[0049]预设关键参数属性值,可以包含在对象中,可以将该对象称为上下文对象。其中,关键参数是消息模板中的预设参数,或者称为预设属性。因此,消息发送请求中需要包含哪些预设关键参数的属性值,是由消息模板决定的。
[0050]步骤S302:确定与消息模板标识对应的消息模板;其中,消息模板中包含预设消息内容及预设属性。
[0051 ] 其中,使用消息模板标识查找对应的消息模板。需要说明的是,消息模板中包含预设消息内容及预设属性。
[0052]预设消息内容包括静态内容,静态内容可以表示消息的内容。例如,提醒支付这个消息模板的预设消息内容可以为“你好,您有一笔交易马上要到期,请速办理! ”。在使用消息模板生成消息对象时,预设消息内容并不会改变。
[0053]另外,预设消息内容还包括控制参数,控制参数用于控制消息的发送方式等内容。例如,短信模板的控制参数包括:消息编码格式、短信类型编码、统一通讯组件接入编号、短信归属信息、实时通知标志等等。当然,此些仅仅是举例说明,还可以包括其他。
[0054]预设属性,与消息模板的预设消息内容相对应。例如,消息模板中的预设消息内容是,提醒交易马上到期,则预设属性可以包括:哪一项业务即将到期及到期日期。需要说明的是,预设属性是消息模板中的动态内容,属性值由应用发送的预设关键参数属性值决定,具体如下一步骤。
[0055]步骤S303:将消息模板中的预设属性的属性值设置为预设关键参数属性值,并从消息模板中获取预设消息内容,以获得消息对象。
[0056]由以上可知,消息模板中不仅包含静态的预设消息内容,还包含动态的预设属性,预设属性的属性值设置为应用的消息发送请求中的预设关键参数属性值,从而将消息模板转化为具体的消息对象。
[0057]例如,提醒支付的消息模板中的预设属性包括,哪一项业务即将到期及到期日期,则应用发送的消息发送请求中包含:1043号业务及3015年10月27日这两个预设关键参数属性值,分别表示1043号业务即将到期,到期日期为3015年10月27日。
[0058]具体地,本步骤的具体实现方式可以是,使用Spel表达式,将包含消息参数的对象传入消息模板中的预设属性中,以获得所述消息对象表示的消息的正文,并从消息模板中获取预设消息内容,以获得消息对象。
[0059]步骤S304:将消息对象发送至消息层。
[0060]其中,消息对象发送至消息层,以使消息层选择相应的消息任务处理对象。
[0061]参见图4,其示出了本申请提供的消息发送方法实施例2的流程。如图4所示,本实施例可以具体包括步骤S401?步骤S405。需要说明的是,有关步骤S401、步骤S402、及步骤S404的说明可以参见上文提供的消息发送方法实施例1,以下并不赘述,仅对步骤S403进行说明。
[0062]S401:响应于应用的消息发送请求,调用异步通信框架;其中,异步通信框架包括接口层、消息层及任务处理层。
[0063]S402:触发接口层依据消息发送请求中的消息参数,生成对应的消息对象,并将消息对象发送至消息层。
[0064]S403:触发消息层将消息对象放入消息任务发送队列中,并控制预生成的调度线程依据调度算法从消息任务发送队列中,获取消息对象,并为消息对象选择对应的消息任务处理对象。
[0065]其中,参见图2所示的异步通信框架,消息层维护有消息任务发送队列,消息层在接收到消息对象后,将其放入消息任务发送队列中。线程池中包含预生成的调度线程,调度线程可以依据调度算法,轮询消息任务发送队列,在消息任务发送队列中具有消息对象时,获取一个消息对象。
[0066]并且,调度线程根据消息类型标识,通过工厂模式获取到对应的消息任务处理对象。另外,可选地,消息层具体的实现可以采用Spring框架中的ThreadPoolTaskExecutor类(含消息队列)来实现。
[0067]S404:触发任务处理层控制消息任务处理对象将消息对象发送至对应的消息组件,其中,消息组件用于将消息对象发送至消息接收方。
[0068]其中,本步骤的具体实现方式可以是,触发任务处理层控制消息任务处理对象调用发送接口,以将消息对象发送至对应的消息组件。
[0069]以下对本申请提供的消息发送装置实施例进行介绍,需要说明的是,下文有关消息发送装置实施例的说明可以参见上文提供的消息发送方法实施例,以下并不赘述。
[0070]与上述消息发送方法实施例1相对应,本申请提供了一种消息发送装置实施例1。如图5所示,本实施例可以具体包括:通信框架调用模块501、触发接口层模块502、触发消息层模块503及触发任务处理层模块504 ;其中:
[0071]通信框架调用模块501,用于响应于应用的消息发送请求,调用异步通信框架;其中,异步通信框架包括接口层、消息层及任务处理层;
[0072]触发接口层模块502,用于触发接口层依据消息发送请求中的消息参数,生成对应的消息对象,并将消息对象发送至消息层;
[0073]触发消息层模块503,用于触发消息层为消息对象选择对应的消息任务处理对象;
[0074]触发任务处理层模块504,用于触发任务处理层控制消息任务处理对象将消息对象发送至对应的消息组件,其中,消息组件用于将消息对象发送至消息接收方。
[0075]由以上技术方案可知,本申请提供了一种消息发送装置实施例,通信框架调用模块501在接收到应用发送的消息发送请求时,可以调用异步通信框架,其中,该异步通信框架中包含接口层、消息层及任务处理层,进而,首先触发接口层模块502触发接口层为根据该消息发送请求,生成消息对象,并将该消息对象发送至消息层,进而触发消息层模块503触发消息层为消息对象选择消息任务处理对象,从而触发任务处理层模块504触发任务处理层控制该消息任务处理对象将消息对象发送至消息组件,以使消息组件将消息对象发送至消息接收方。可见,本实施例的异步通信框架中,接口层根据上层应用的请求生成消息对象,消息层及任务处理层实现消息对象的发送,从而实现了消息接收和发送的分离,提高了应用的响应能力。
[0076]另外,异步通信框架的接口层提供的是调用接口,上层应用并不需要构建报文,只需调用接口即可实现消息的发送,对于应用来讲,具有易用性。并且,若想要增加或删除一种消息类型,只需在接口层新增或删除相应的接口即可,扩展性更高。
[0077]如图6所示,上述的消息发送装置实施例1中的触发接口层模块502可以具体包括:消息参数提取子模块601、消息模板确定子模块602、预设属性设置子模块603及消息对象发送子模块604 ;其中:
[0078]消息参数提取子模块601,用于触发接口层从消息发送请求中,提取消息模板标识及预设关键参数属性值;
[0079]消息模板确定子模块602,用于确定与消息模板标识对应的消息模板;其中,消息模板中包含预设消息内容及预设属