一种消息系统及消息发送方法技术方案

技术编号:19593022 阅读:33 留言:0更新日期:2018-11-28 04:46
本发明专利技术公开了一种消息系统,包括请求入口模块、校验模块、消息工厂模块、发送者模块和模版模块;请求入口模块包括API接口单元和WATCHER单元接收调用方的内部系统发送的请求并发送至校验模块,校验模块对请求入口模块发送的请求进行校验;消息工厂模块用于根据不同的事件类型生产出消息对象,并将封装好的消息发送至发送者模块;发送者模块包括站内信发送者单元、邮件发送者单元、短信发送者单元和微信发送者单元,调用相应的第三方平台将消息发送给用户;模版模块用于存储模版;本发明专利技术还公开一种消息发送方法。本发明专利技术将消息发送从业务的主要流程中剥离出来,降低系统之间的耦合度,减少对主要业务流程的影响。

【技术实现步骤摘要】
一种消息系统及消息发送方法
本专利技术涉及消息发送
,一种消息系统及消息发送方法。
技术介绍
消息系统是用于提供消息发送服务的子系统,是系统向用户基于某事件即时反馈的重要途径。消息的及时性、准确性深刻影响着系统的用户体验。消息的发送之前是在主站代码库中实现的,为系统的各个功能模块提供消息发送服务。但是,随着业务量的增加以及系统的拆分和增加,带来了一些问题:标准化:目前主站上调用消息发送的方式不统一,有的调用消息模块服务层的发送方法,有的直接入发送队列,有的直接调用短信渠道。另外,随着系统的拆分,以及新业务诞生的新系统,都有发送消息的需求,如果还只停留在主站进行消息发送,将不足以满足日益增长的业务需求。可扩展性:目前主站模块之间的代码耦合程度较高,造成业务整改和扩展起来比较麻烦。高可用性:主站上的服务器或者数据库出现问题,会造成业务间功能的相互影响,出现连带反应。隔离性:主站上各个业务的表都在同一个库里,容易造成不同业务间的数据篡改。
技术实现思路
本专利技术的目的在于提供一种消息系统及消息发送方法,将消息发送从业务的主要流程中剥离出来,降低系统之间的耦合度,减少对主要业务流程的影响。为实现上述目的,本专利技术提供如下技术方案:一种消息系统,其特征在于,包括请求入口模块、校验模块、消息工厂模块、发送者模块和模版模块,所述请求入口模块包括API接口单元和WATCHER单元接收调用方的内部系统发送的请求并发送至校验模块,所述API接口单元用于给内部系统提供消息发送的标准接口和定制化接口,所述WATCHER单元通过启动队列主动监听RabbitMQ交换机的广播事件,根据不同的事件进行消息发送;所述校验模块对请求入口模块发送的请求进行校验并在确认合法后将其发送至消息工厂模块;所述消息工厂模块用于根据不同的事件类型生产出消息对象,其消息父类根据消息对象实现的方法对消息进行封装并将封装好的消息发送至发送者模块;所述发送者模块包括站内信发送者单元、邮件发送者单元、短信发送者单元和微信发送者单元,所述站内信发送者单元将消息保存至站内信表中,所述邮件发送者单元将信息入邮件发送队列,再调用邮件平台将信息发送给用户,所述短信发送者单元将消息入短信发送队列,再调用短信平台将信息发送给用户,所述微信发送者单元将信息入微信发送队列,再调用微信平台将信息发送给用户;所述模版模块用于存储模版。进一步的,所述校验包括签名校验,系统信息校验,消息模板校验及模板数据校验。进一步的,所述消息对象包括标准消息对象和定制化消息对象。进一步的,所述消息对象的属性包括消息类型、消息媒介、消息发送策略,该属性继承于消息父类。进一步的,所述对消息进行封装的具体操作包括:获取消息模板,配置发送媒介,配置发送策略,替换模板,最后将封装好的消息交给相对应的发送者。一种消息发送方法,其特征在于,包括以下步骤,步骤S1:调用方的内部系统发出请求进行消息发送;步骤S2:对所述请求进行校验;步骤S3:根据不同的事件类型生产出消息对象;步骤S4:对消息对象进行加工将封装好的信息发送给各个不同的发送者;步骤S5:各个不同的发送者通过对应的平台将消息发送给用户。进一步的,所述步骤S2中的校验包括签名校验,系统信息校验,消息模板校验及模板数据校验。进一步的,所述步骤S4中封装的具体操作包括:获取消息模板,配置发送媒介,配置发送策略,替换模板,最后将封装好的消息交给相对应的发送者。与现有技术相比,本专利技术的有益效果是:本专利技术将消息发送功能独立出来作为一个基础服务的子系统,可以将消息发送从业务的主要流程中剥离出来,降低系统之间的耦合度,减少对主要业务流程的影响。另外,消息发送相关的业务数据都可以迁移出来,防止消息相关的数据被其他业务篡改。我们还可以针对消息系统做些高可用的措施,实现消息系统的自治。附图说明图1为本专利技术的系统模块框图。图2为请求入口的示意图。图3为消息工厂的示意图。图4为封装的示意图。图5为消息发送的示意图。图6为本专利技术的方法流程图。具体实施方式下面对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术提供一种消息系统,消息系统采用了LNMP架构。其中,PHP采用了PHALCON框架,Phalcon是开源、全功能栈、使用C扩展编写、针对高性能优化的PHP框架。另外,系统间还采用了MQ技术进行解耦,MQ全称为MessageQueue,消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。请参照图1,消息系统包括请求入口模块、校验模块、消息工厂模块、发送者模块和模版模块,所述请求入口模块包括API接口单元和WATCHER单元接收调用方的内部系统发送的请求并发送至校验模块。如图2所示,所述API接口单元用于给内部系统提供消息发送的标准接口和定制化接口,于本实施例中,标准接口主要针对于通用方法和发送即时短信,定制化接口主要针对不同的系统,如山海关系统、业务后台系统、用户中心系统、主站系统等,调用方的内部系统只需根据接口定义好的参数发送http请求即可。所述WATCHER单元通过启动队列主动监听RabbitMQ交换机的广播事件,根据不同的事件进行消息发送,该方法主要用于定制化开发,耦合度更低,安全性更高。所述校验模块对请求入口模块发送的请求进行参数等一系列的校验并在确认合法后将其发送至消息工厂模块;具体的,消息系统在接收到请求后,会进行一系列的校验,包括:签名校验,系统信息校验,消息模板校验及模板数据校验,确认全部合法后将其发送给消息工厂模块。请参照图3,所述消息工厂模块用于根据不同的事件类型生产出消息对象,包括标准消息对象和定制化消息对象。消息对象的属性包括消息类型、消息媒介、消息发送策略,该属性继承于消息父类,还需要实现父类的抽象方法,主要有:设置发送媒介,标准化模版数据等。请参照图4,其消息父类(亦称消息对象基类)根据消息对象实现的方法对消息进行封装并将封装好的消息发送至发送者模块,封装的具体操作包括:获取消息模板,配置发送媒介,配置发送策略,替换模板,最后将封装好的消息交给相对应的发送者。所述发送者模块包括站内信发送者单元、邮件发送者单元、短信发送者单元和微信发送者单元,所述站内信发送者单元将消息保存至站内信表中,所述邮件发送者单元将信息入邮件发送队列,再调用邮件平台将信息发送给用户,所述短信发送者单元将消息入短信发送队列,再调用短信平台将信息发送给用户,所述微信发送者单元将信息入微信发送队列,再调用微信平台将信息发送给用户;如图5所示,主要分为两个步骤,第一步是发送对象产生发送任务,第二步是执行发送任务;第一步的主要内容是基于发送媒介的划分发送对象并发送对象基类,第二步的主要内容则是将消息通过对应的平台发送给用户。所述模版模块用于存储模版,还包括模版的添加,修改和删除工作。请参照图6,本专利技术还提供一种消息发送方法,其特征在于,包括以下步骤,步骤S1:调用方的内部系统发出请求进行消息发送;步骤S2:对所述请求本文档来自技高网...

【技术保护点】
1.一种消息系统,其特征在于,包括请求入口模块、校验模块、消息工厂模块、发送者模块和模版模块,所述请求入口模块包括API接口单元和WATCHER单元接收调用方的内部系统发送的请求并发送至校验模块,所述API接口单元用于给内部系统提供消息发送的标准接口和定制化接口,所述WATCHER单元通过启动队列主动监听RabbitMQ交换机的广播事件,根据不同的事件进行消息发送;所述校验模块对请求入口模块发送的请求进行校验并在确认合法后将其发送至消息工厂模块;所述消息工厂模块用于根据不同的事件类型生产出消息对象,其消息父类根据消息对象实现的方法对消息进行封装并将封装好的消息发送至发送者模块;所述发送者模块包括站内信发送者单元、邮件发送者单元、短信发送者单元和微信发送者单元,所述站内信发送者单元将消息保存至站内信表中,所述邮件发送者单元将信息入邮件发送队列,再调用邮件平台将信息发送给用户,所述短信发送者单元将消息入短信发送队列,再调用短信平台将信息发送给用户,所述微信发送者单元将信息入微信发送队列,再调用微信平台将信息发送给用户;所述模版模块用于存储模版。

【技术特征摘要】
1.一种消息系统,其特征在于,包括请求入口模块、校验模块、消息工厂模块、发送者模块和模版模块,所述请求入口模块包括API接口单元和WATCHER单元接收调用方的内部系统发送的请求并发送至校验模块,所述API接口单元用于给内部系统提供消息发送的标准接口和定制化接口,所述WATCHER单元通过启动队列主动监听RabbitMQ交换机的广播事件,根据不同的事件进行消息发送;所述校验模块对请求入口模块发送的请求进行校验并在确认合法后将其发送至消息工厂模块;所述消息工厂模块用于根据不同的事件类型生产出消息对象,其消息父类根据消息对象实现的方法对消息进行封装并将封装好的消息发送至发送者模块;所述发送者模块包括站内信发送者单元、邮件发送者单元、短信发送者单元和微信发送者单元,所述站内信发送者单元将消息保存至站内信表中,所述邮件发送者单元将信息入邮件发送队列,再调用邮件平台将信息发送给用户,所述短信发送者单元将消息入短信发送队列,再调用短信平台将信息发送给用户,所述微信发送者单元将信息入微信发送队列,再调用微信平台将信息发送给用户;所述模版模块用于存储模版。2.根据权利要求1所述的消息系统,其特征在于,所述校验包括签名校...

【专利技术属性】
技术研发人员:杨君李恒刘义雷张园万磊赵雅丽马委斌
申请(专利权)人:杭州鑫合汇互联网金融服务有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1