项目场景:
项目中的多个场景需要发送邮件通知,或者发送其他消息给到业务方。这里写一个分发消息的基础服务。
技术栈:
Diamond(配置存储平台):将邮箱配置(发件人,收件人等信息)存储在diamond云端,可以在不部署代码的情况下进行快捷的改动。
设计模式:
策略模式+工厂模式:维护多场景下的调用实现类,进行对应服务的分发
表涉及:消息发送记录表,这里以业务类型+业务id+发送渠道+调用类型 确认唯一值。
实现方式:相关逻辑为消息发送无论成功失败都会记录数据,已有success记录则不调用。失败时具有3次重试机制。
BUG问题记录:
邮件发送时出现了465问题,请求头里配置
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");