后台消息推送框架设计

本文详细记录了一次后台消息推送系统的重构过程,从最初的消息存储和推送耦合,到逐步优化,实现消息类型与存储、推送的分离,降低耦合,提高维护性。文中介绍了多次设计迭代,包括消息类型的抽象、数据库结构的调整以及推送环境参数的处理,最终形成了一个较为完善的后台消息推送框架。
摘要由CSDN通过智能技术生成

前言

  最开始自己公司的后台推送系统只能是用户在线时推送,推送消息也不会保存,若用户离线,那么这条推送消息就再也无法获取。更让人头疼的是:推送的内容和推送系统是耦合在一起的,这样往往在改一处代码的同时,会出现意想不到的bug。着就更加坚定了自己要把推送代码重构的决心了。下面就是自己的整个设计过程和期间遇到的问题,写出来和大家分享一下,望大家多多指教。

设计过程

  最开始设计的时候是把数据的存储,修改和消息的推送放到一个类中pushmanager中,各种消息都糅合到一个message中,从后台拉取消息单独提出来pullManager,如图1:
  图1
  
  上面的设计有如下弊端:
  1、Message来表示各种类型的消息,而它又与数据库表直接关系,这样Message要把各种消息类型的不同点都包含进来,这样,添加一个消息类型,就要在数据库中添加字段来表示它与其他类型不同点。不符合开闭原则,维护性极差。
  2、消息存储和推送的耦合性太强了。

  针对上面问题,对其做了进一步的优化(如下图):
  1、用MessageTypeBase这个抽象类来将消息的共同行为和属性抽象出来,各种不同类型的消息继承这个抽象类,然后再针对不同类型的消息添加不同的行为和属性
  2、将消息存储和推送两个分开,messageManager负责消息的增删改查(拉取消息的行为也放入其中),它对外提供服务,Pu

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值