超级文档
消息队列说明
登录
免费注册 / 登录

消息队列说明

编写人:刘洋
系统:行政协同平台
日期:0000-00-00
生产队列:notify_task
状态:与现行发送方式一致

一、队列用途

行政协同平台把待发送的企业微信消息和前台屏事件放在数据库表 notify_task 里,由发送线程按顺序取出。员工提交单据的请求只负责写入这张表,发送成败另计。总部每天约 80 至 120 条消息。表在主库,和请假、预订同一套备份。本文描述的是 v1.2.4 正在使用的这张表,异步线程池改造完成前仍由现有 4 个发送线程消费。

二、消息种类

照片提醒在生产保持关闭,培训照片存在访客单附件里,不进队列。导出完成目前只在预发的 POC 里出现过,生产导出仍是同步下载,这行是预留种类。

三、消费方式

  1. 文本线程 4 个,每次取 10 条状态为待发送的记录,按创建时间从早到晚。
  2. 发送成功后把状态改为已送达,并写下对方返回时间。
  3. 失败后按回调重试的间隔改下次发送时间,四次失败改为待人工。
  4. 同一 eventId 只应有一行。重复插入时数据库拒绝,请求仍返回原来的单据号。

四、积压时

待发送超过 50 条持续 2 分钟,值班人先看照片开关和线程数。线程为 0 时按当前版本滚动重启,一次 1 台。线程正常则把并发从 4 调到 8,降到 50 条以下再调回。9月18日培训签到期间队列曾超过 200 条,关闭到达提醒后 6 分钟内回到 20 条以下。陈静把当时的峰值写在值班交接里,作为 50 条这条线的对照。9月20日全天写入 104 条,已送达 102 条,待人工 0 条,待发送在 18:00 时为 2 条。表空间约 12 MB,李莉判断在现有备份窗口内可以接受,暂不拆表。最老一条待发送在 18:00 的等待是 4 秒。刘洋确认 4 个文本线程都在取数,没有停在照片上传上。照片开关当天为关闭,队列里没有图片类消息。