统一邮件服务(用于统一各个系统发送邮件功能,记录历史信息)

业务场景

统一各个系统发送邮件功能,记录历史信息,未来会添加短信、服务间通信等功能,算是一个消息中心的雏形

泳道图

统一邮件服务(用于统一各个系统发送邮件功能,记录历史信息)

统一邮件服务(用于统一各个系统发送邮件功能,记录历史信息)

文字流程

用户登录注册以及历史信息查看

  1. 用户注册:
    1)、用户输入用于发送邮件的ad账号及密码,通过ldaaps验证之后将密码加密存入数据库等待发送邮件使用
    2)、注册成功后跳转到用户信息页面,展示用户基本信息以及用于调用发送邮件接口的key
  2. 用户登录:用户输入注册的ad账号及密码,与数据库中的密码进行校验,如果不一致则提示“若您已经修改邮箱密码,请点击修改密码按钮进行密码修改”
  3. 用户修改密码:用户输入注册的ad账号及密码,与数据库中的密码进行校验,如果不一致则提示“若您已经修改邮箱密码,请点击修改密码按钮进行密码修改”
  4. 查看历史信息:点击历史信息菜单可以查看历史发送的邮件基本信息及当前状态(包括成功、失败、队列中)

用户调用发送邮件接口

  1. 用户携带key以及邮件具体信息(收件人、标题、内容等)调用接口
  2. 用户携带参数正确则根据key值获取到对应的邮箱作为发件人,将该条消息加入消息队列并入库(状态为队列中)
  3. 某条消息在队列中时间过长,首先返回给用户队列中的提示信息,然后继续等待直到轮到该条消息进行发送邮件操作
  4. 发送邮件成功,将该条消息移出消息队列,将该条消息状态变更为成功,若请求未断开则返回给用户成功的提示信息
  5. 发送邮件失败, 首先将该消息的result值变更为false,并开始记录重试次数(首次为0,非首次+1),之后判断重试次数是否小于10次,若小于10次等待定时任务进行重试操作(此时如果是首次失败且请求未断开则返回给用户队列中的提示信息);若大于10次则不再等待重试操作,将该消息的result修改为true,状态变更为失败
  6. 存在一个定时任务进行重试操作,每隔30s将result值为false、重试次数小于10且不在消息队列中的的消息加入消息队列