260 likes | 470 Views
营销平台通道设计. 开发一部 2009 年 11 月. 目录. 营销平台整体结构 通道模块划分 通道部署 整体 MQ 通道基础框架设计 Intercepting Filter JMS 消息处理 发送器设计 通道优先级设计 MQ 方案设计 疲劳度控制 概念模型 基础框架 接收人员邮件接收数量时间段内疲劳度控制 电子邮件发送 text/html 邮件发送 Tracelog 通道接口 模式 黑名单控制. 营销平台整体结构. 营销平台由两部分组成: 营销模块 通道模块. 通道模块划分. 通道模块划分和规划. 通道部署 - 整体.
E N D
营销平台通道设计 开发一部 2009年11月
目录 营销平台整体结构 通道模块划分 通道部署 整体 MQ 通道基础框架设计 Intercepting Filter JMS消息处理 发送器设计 通道优先级设计 MQ方案设计 疲劳度控制 概念模型 基础框架 接收人员邮件接收数量时间段内疲劳度控制 电子邮件发送 text/html邮件发送 Tracelog 通道接口 模式 黑名单控制
营销平台整体结构 营销平台由两部分组成: • 营销模块 • 通道模块
通道部署-整体 NODE1 NODE2 NODE3 QUEUE1 QUEUE2 … NODE4 … 数据库
通道部署 MQ的部署 在一个Virtual IP下挂2台JBOSS MQ,JBOSS MQ使用数据保存MQ 消息。 • 2台MQ,一主一副,由F5做负载均衡,当MQ1活动时将消息发送给MQ1,只有当MQ1出现当机的情况,MQ2才会工作。 • MQ会把MQ消息保存到数据库中,当MQ2工作的时候不会导致消息的丢失。
通道部署 MQ的资源使用 国际站高优先级任务 国际站普通级任务 CRM普通级任务 CRM高优先级任务 QUEUE/HIGH1 QUEUE/MIDDLE QUEUE/HIGH2
通道基础框架设计 新建任务接口调用 发送邮件接口调用 接口调用权限验证 接口调用权限验证 参数验证 参数验证 发送上下限控制 疲劳度控制 …… …… 新建任务接口执行 发送邮件 Intercepting Filter
通道基础框架设计 Intercepting Filter Intercepting Filter模式通常用在某些消息需要进行相关的处理,但目标处理应该包装到任意的一组前置、后置处理流程中,例如消息的转换、转义等等。
通道基础框架设计 Intercepting Filter • InterceptorManager 类是Intercepting Filter模式的边界,客户程序在特定的上下文(由Context接口定义)通过InterceptorManager 处理目标操作(由Executor接口定 义)。另外,InterceptorManager 负责InterceptorChain的创建、初始化和执行。 • InterceptorChain维护一组interceptor和Executor。 • Interceptor接口只有一个方法,先做前置处理,如果处理没有问题就让InterceptorChain去处理接下来的Interceptor。如果中途发生了错误 Interceptor返回或抛出异常。执行完一系列Filter以后就执行executor的处理,然后以同样的方式返回,executor可以做一些后置处理。 • Executor接口实现类是消息的接受者或者包装者。 • Context应该是相当抽象的,它可以使不同的类或者是一组类,或是Map。
通道基础框架设计 JMS消息处理
通道基础框架设计 JMS消息处理 • 每个消息除了包含原有的业务信息外,还要包含消息的类型,用于消息处理器灵活动态处理消息。 • DefaultJmsProducer缺省的Jms消息发送, 不关心具体的消息格式。 • DefaultJmsListener系统jms消息的监听者。当收到消息的时候依据消息的类型调用相应的MessageCommand进行处理。 • MessageCommand抽象的命令接口。 • SendFaxMessageCommand,SendEmailMessageCommand 具体的邮件发送命令。
通道基础框架设计 发送器设计
疲劳度控制 疲劳度概念模型
疲劳度控制 基础框架-疲劳度设计类图
疲劳度控制 基础框架-疲劳度控制案例解释 近7天不超过3封邮件 而且近3天不超过2封 。 For each a in chilren { a.compare(); ……. } JoinFatigureStrategy LastCount(Email,7)<3 LastCount(Email,3)<2
疲劳度控制 基础框架-疲劳度控制案例解释 (近7天不超过3封邮件 而且近3天不超过2封 )或者(今天一封都没有发过)。 UnionFatigureStrategy JoinFatigureStrategy LastCount(Email,1)<1 LastCount(Email,7)<3 LastCount(Email,3)<2
疲劳度控制 接收人员邮件接收数量时间段内疲劳度控制 将各种疲劳度数据组成Key-Value这种信息,例如为了【接收人员邮件接收数量时间段内疲劳度控制】,以接收方放的Email地址为Key,Value为各种疲劳度数值(最近31天内每天的发送数量,历史各个月发送数量汇总)。 key=>weijun.huwj@alibaba-inc.com value=> { 'email':{'2009-10-12':1, '2009-10-11':3 '2009-09':20} }
疲劳度控制 接收人员邮件接收数量时间段内疲劳度控制
邮件发送 text/html邮件发送 MimeMultipart content = new MimeMultipart("alternative"); MimeBodyPart text = new MimeBodyPart(); MimeBodyPart html = new MimeBodyPart(); text.setText(plain_text); html.setContent(html_text, "text/html"); content.addBodyPart(text); content.addBodyPart(html); 目前的mail发送包支持该扩展.
邮件发送 通道接口蓝图 Web Service ESB 通道服务 基础业务 基础业务 基础业务 …
传真接收 Web Service ESB … 传真接收 订单处理 基础业务2 基础业务3 …
黑名单过滤 过滤黑名单 名单已载入缓存? 从DB载入 黑名单 缓存过滤 返回过滤结果
THE END 谢谢!