首页 > 移动平台 > 详细

App Push系统(3)--推送服务

时间:2021-06-30 18:07:49      阅读:9      评论:0      收藏:0      [点我收藏+]

1 按功能进行系统规划


1.1 设备管理

1.2 模板管理

1.3 推送服务(*)

1.4 渠道推送

1.5 流量控制

1.6 任务管理

1.7 统一回执

1.8 推送管理平台

 

1.3 推送服务

采用异步方式,为业务方提供RPC推送服务接口

1.3.1 发送过滤服务

* 过滤服务定义了很多策略,策略决定了消息是否能发送,所有的策略通过消息才能发送,如果被其中任意一条策略拦截消息将不能发送。

* 过滤策略接口设计,定义策略处理接口,并采用责任链模式,指定策略的执行的先后顺序

public interface StrategyChainHandler {

      /**
       * 处理消息, 返回成功继续执行下一个handle, 失败则过滤
       */
     <T> Results handle(T t, UserPushMsg userPushMsg);

)

* 策略过滤和业务联系的比较紧密,规则实现也比较多

@Component
public class WhiteListService extends StrategyChainHandler{

      @Override
      public <T> Results handle(T t, UserPushMsg userPushMsg) {
           Return new Result();
     }

}

* 策略执行器按照策略的顺序执行

@Component
public class StrategyChainProcessor {

      @Autowired
      private List<StrategyChainHandler> strategys;

      public <T> Results handle(T t, UserPushMsg userPushMsg) {

            List<StrategyChainHandler> currentHandlers = strategys.stream().filter(s->s.isSupported(t)).collect(Collectors.toList());

            for (StrategyChainHandler chain : currentHandlers) {

                 try {
                      Results results = chain.handle(t, userPushMsg);
                      if (results == null || ApiResultStatus.FAIL.getValue().equals(results.getResult())) {
                         return results;
                      }
                  } catch (Exception ex) {
                      log.error("通过handler:{}进行处理失败! context:{}", handler.getClass(), ex);
                  }
             }
            return new Results(ApiResultStatus.SUCCESS.getValue(), ApiResultStatus.SUCCESS.getValue(), ApiResultStatus.SUCCESS.getDesc());
     }

}

 

1.3.2 发送路由策略

 

 

1.3.3 消息存储

App Push系统(3)--推送服务

原文:https://www.cnblogs.com/ywqbj/p/14953605.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!