用于消息队列下发消息的方法和消息下发装置的制造方法_2

文档序号:8433657阅读:来源:国知局
知、表现形式等)进行的封装,目的是将其转换成应用软件可识别的推送实体进行消息推送。本实施例消息推送采取极光推送(JPush)方式。该极光推送是一个面向普通开发者开放的、免费的第三方消息推送服务。将上述推送实体提交到极光运营网关,由其进行推送服务。
[0037]以下给出一个对上述消息实体进行封装的实现方式的示例:
[0038]PushVO pushVO = new PushVO ();
[0039]PushMsg pushMsg = new PushMsg ();
[0040]//通性工具类 Qiuying Constants
[0041]pushMsgV0.setMesType(QiuyingConstants.MESSAGE_TYPE_NOTIFIC AT1N);
[0042]pushMsgV0.setPushStatus(QiuyingConstants.PushState.MSG_PUSH_STA TUS_PUSHING);
[0043]pushMsgV0.setld (id);
[0044]//JpushUtils是极光标识工具类,通过该类获取符合满足极光格式的相应标识码。
[0045]pushMsgV0.setSendNo(String.valueOf(jPushUtils.getSendNo()));
[0046]//extras是一个完全为满足各个第三方扩展的第三方适配构造器。
[0047]pushMsgV0.setExtras(extras);
[0048]以下是上述推送实体进行消息推送的实现方式的代码示例:
[0049]pushMsgV0.setLevel(3);
[0050]BeanUtils.copyProperties(pushMsg, pushMsgVO);
[0051]JPushParams params = new JPushParams();
[0052]params.setSendNo(Integer, parselnt(pushMsgV0.getSendNo()));
[0053]params.setReceiverType(getReceiverType(pushMsgV0.getReceiveType ()));
[0054]params.setReceiverValue(pushMsgV0.getReceiverld());
[0055]pushV0.setPushMsg(pushMsg);
[0056]pushV0.setParams (params);
[0057]pushV0.setExtras(extrasMap);
[0058]String result = jPushService.push (pushVO);
[0059]步骤S204:接收极光运营网关返回由运营商的业务提供的结果。
[0060]步骤S205:根据极光运营网关返回的结果,判断消息下发是否成功,无论发送成功还是失败,都将反馈结果记录入库备查。
[0061]步骤S206:当下发所述消息队列中某个消息失败时,根据获取的该消息当前的参数信息,确定该消息当前的优先级,按该消息当前的优先级重新插入所述消息队列。
[0062]重复步骤S201至S206,将所述消息队列中的各个消息按当前的优先级顺序进行下发。其中,消息队列中的各个消息的时间系数在每次消息的下发后进行更新。进而,消息队列中的各个消息的优先级在每次消息的下发后进行更新。其中,采用进程监听消息队列缓存区是否有待下发的消息,按上述方法进行消息下发,直至所述消息队列中的下发消息为O。
[0063]下面是实现上述入列时的时间系数确定的示例性程序代码:
[0064]msgTemplate.add( “MsgSets”,
[0065]pushVO, (new Date 0.getSecondsO+1)*pushV0.getPushMsg0.getLevelO);
[0066]图2示意性的显示了本申请一实施方式的消息下发装置的结构框图。如图2所示,消息下发装置I包括:优先级确定单元11和消息下发单元12,其中,优先级确定单元11包括优先级更新单元111和消息封装单元112。
[0067]具体而言,优先级确定单元11用于接收所述消息进入所述消息队列的请求,获取所述消息的参数信息,根据所述消息的参数信息确定所述消息的优先级,并根据所述消息的优先级将所述消息插入到所述消息队列中;优先级更新单元111用于当下发所述消息队列中的消息失败时,根据获取的该消息当前的权重和时间系数,确定该消息当前的优先级,按该消息当前的优先级将该消息重新插入所述消息队列。消息封装单元112将所述消息进行封装、转换成可识别的推送实体。消息下发单元12用于将所述消息队列中的转换成推送实体的各个消息按上述优先级顺序提交到运营网关,再由所述运营网关进行下发。
[0068]以上所述的仅是本申请的一些实施方式。对于本领域的普通技术人员来说,在不脱离本申请创造构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。例如,针对不同情况,对不同参数的重视程度不同,上述方式除了乘法运算外,还可以采用幂次方或者函数等其它运算方法。对本领域的技术人员来说,可以对上述公式的参数进行改动,或者对参数之间的关系进行其它修改或运算,这些变更或修改均在本申请的保护范围之内。
【主权项】
1.用于消息队列下发消息的方法,包括: (1)接收所述消息进入所述消息队列的请求,获取所述消息的参数信息,根据所述消息的参数信息确定所述消息的优先级,根据所述消息的优先级将所述消息插入到所述消息队列中; (2)将所述消息队列中的各个消息按所述优先级顺序地下发。
2.根据权利要求1所述的方法,其中,所述步骤(I)中的消息队列保存在缓存区,通过应用程序编程接口接收所述消息入列的请求。
3.根据权利要求1所述的方法,其中,所述步骤(2)中,当下发所述消息队列中的消息失败时,根据获取的该消息当前的权重和时间系数,确定该消息当前的优先级,将该消息按当前的优先级重新插入所述消息队列,将所述消息队列中的各个消息按当前的优先级顺序进行下发。
4.根据权利要求3所述的方法,其中,所述消息的优先级是通过所述消息的权重和所述消息的时间系数的乘积确定的。
5.根据权利要求4所述的方法,其中,所述消息队列中的各个消息的时间系数在每次消息下发后进行更新。
6.根据权利要求5所述的方法,其中,所述消息队列中的各个消息的优先级在每次消息的下发后进行更新。
7.根据权利要求1所述的方法,其中,所述步骤⑵包括:将所述消息进行封装、转换成可识别的推送实体,将所述推送实体提交到运营网关,由所述运营网关下发所述推送实体。
8.根据权利要求1所述的方法,其中,所述步骤(2)还包括,将所述下发消息的状态信息存入消息状态库;和/或 通过线程监听缓存区内的所述消息队列,根据所述消息队列中所述各个消息的优先级下发所述各个消息。
9.消息下发装置,包括: 优先级确定单元(11),接收所述消息进入所述消息队列的请求,获取所述消息的参数信息,根据所述消息的参数信息确定所述消息的优先级,根据所述消息的优先级将所述消息插入到所述消息队列中; 消息下发单元(12),将所述消息队列中的各个消息按所述优先级顺序地下发。
10.根据权利要求9所述的消息下发装置,其中所述优先级确定单元(11)包括: 优先级更新单元(111),当下发所述消息队列中的消息失败时,根据获取的该消息当前的权重和时间系数,确定该消息当前的优先级,按该消息当前的优先级重新插入所述消息队列,和/或 消息封装单元(112),将所述消息进行封装、转换成可识别的推送实体,提交到运营网关,以由所述运营网关下发所述推送实体。
【专利摘要】本申请公开了一种用于消息队列下发消息的方法。该方法包括:(1)接收所述消息进入所述消息队列的请求,获取所述消息的参数信息,根据所述消息的参数信息确定所述消息的优先级,根据所述消息的优先级将所述消息插入到所述消息队列中;(2)将所述消息队列中的各个消息按所述优先级的顺序进行下发。本申请的方法能优化消息出列的时间,确保了关键业务能够快速处理,避免了权重较轻的消息长时间的延时,降低了系统应用风险,提高了用户的实时交互体验。
【IPC分类】H04L12-865, H04L12-58
【公开号】CN104753769
【申请号】CN201510130179
【发明人】姚晓宏, 周嘉健
【申请人】新余兴邦信息产业有限公司
【公开日】2015年7月1日
【申请日】2015年3月24日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1