一、短信接收服务介绍

短信接收服务的作用就是为应用提供访问接口,应用需要发送短信时只需要调用短信接收服务,由短信接收服务将信息保存到消息缓冲区(Mysql、Redis)。后续会由短信发送服务从消息缓冲区获取消息并发送短信。
动力短信短信平台整体架构:
image.png
动力短信短信平台业务架构:
image.png
通过上面的业务架构可以看到,短信接收服务(pd-sms-api)提供3种方式供业务系统调用:

  • HTTP接口
  • TCP
  • SDK形式

短信接收服务通过资质验证(可开关)、短信内容校验后将短信信息发送到对应中间件中(Redis、MySQL)。
短信发送方式分为两种类型:
1、定时发送短信:将短信内容存储到MySQL数据库中,由短信发送服务通过定时任务获取并发送 2、普通短信:将短信内容推送到Redis队列中,由短信发送服务异步接收并发送

二、Redis消息队列

1、Redis队列介绍

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
Redis的list是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边)。
使用Redis的list可以模拟消息队列,即使用rpushlpush命令将数据插入队列(生产消息),使用lpoprpop命令将数据弹出队列(消费消息)。
队列中的消息可以由不同的生产者写入,也可以由不同的消费者消费,但是一个消息一定是只能被消费一次。
redis所有命令,可从官网查看:http://redis.cn/commands.html#list
image.png

2、案例演示

发布消息:

  1. root@77889f10b0c8:/data# redis-cli
  2. 127.0.0.1:6379> LPUSH ydllist msg1
  3. (integer) 1
  4. 127.0.0.1:6379> LPUSH ydllist msg2
  5. (integer) 2
  6. 127.0.0.1:6379> LPUSH ydllist msg3
  7. (integer) 3
  8. 127.0.0.1:6379> LPUSH ydllist msg4
  9. (integer) 4
  10. 127.0.0.1:6379> LPUSH ydllist msg5
  11. (integer) 5