实际项目中的消息中心

本文介绍了项目中的消息中心msgcenter,包括各种类型消息如DB、Comet、msg、push等的统一格式处理。消息中心作为一个独立模块,对外通过MsgSenderFacade接口提供发送消息的能力,通过不同的消息处理器进行验证和分发。文章还展示了如何处理不同类型的短信发送,包括检查、发送和错误处理流程。
摘要由CSDN通过智能技术生成

前一篇文章讲到我们项目的工作流,这一篇我们扒一扒项目中的消息中心,msgcenter。消息可以分成很多种消息:留存可重复查看的DB消息,短暂保存在redis的comet消息,短信形式的msg消息,推送到手机的push消息等等。但是不管是哪种类型的消息,在我们的项目中都有统一的格式。(不管是db,msg或者是push都是一样的格式),这样就能保证存储和显示已经推送的一致性。

项目中的消息中心也是独立的模块,用maven依赖被各个网关层使用,当然简单方便,不过后来看了一篇文章,讲到微服务,我就在想是不是可以把消息模块独立出来做一个微服务,这样对消息中心做的优化就不用再修改别的网关应用了。不过这个是架构师哥哥处理的问题,我就是这么简单的想想。

废话不说,我们看msgcenter的层次

还是统一的层次,因为是模型,没有集成web层。dal是数据库持久层,domain是模型层(最接近模型的层),facade层是对外提供能力的层(外观模式,定义了对外提供能力的接口),biz是实现facade层的实例层,integration是集成其他模块的层(这一层很有意思,到时候我们单独写一篇文章介绍),test是测试层

那既然我们的消息中心是一个模型,供其他系统调用,那我们就看下facade对外提供的能力吧。

看facade层只有两个接口类(我们只关注MsgSenderFacade接口),

public interface MsgSenderFacade {
    /**
     * 发送消息
     *
     * @param list
     * @return
     */
    List<MsgBodyDTO> sendMsgs(List<MsgBodyDTO> list);

我们简单的看下发送消息的方法,系统中所有的消息调用的都是这个方法,是不是很屌,原因上面我们讲到过,不管什么类型的消息,他们都有统一的格式,那就是MsgBodyDTO,里面就是我们平常类的ID,消息模板ID,模板的替换数组,接收用户的ID,接收用户的电话号码,业务号,标题,真实内容,创建时间

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值