消息中间件的作用
• 应用解耦
• 弹性伸缩
• 冗余存储
• 流量削峰
• 异步通信
• 数据同步

1. 简单模式

消息中间件挤压监控 消息中间件的工作模式_消息中间件挤压监控

  1. 生产者将消息交给默认的交换机(AMQP default)
  2. 交换机获取消息后交给绑定这个生产者的队列(关系是通过队列名称完成)
  3. 监听当前队列的消费者获取消息,执行消费逻辑

应用场景:短信,聊天

2. 工作模式

消息中间件挤压监控 消息中间件的工作模式_应用场景_02

  1. 生产者将消息交个交换机
  2. 交换机交给绑定的队列
  3. 队列由多个消费者同时监听,只有其中一个能够获取这一条消息,形成了资源的争抢,谁的资源空闲大,争抢到的可能越大;

应用场景:抢红包,大型系统的资源调度

3. 发布订阅 publish/subscribe

消息中间件挤压监控 消息中间件的工作模式_资源调度_03

  1. 生产者扔给交换机消息
  2. 交换机根据自身的类型(fanout)将会把所有消息复制同步到所有与其绑定的队列
  3. 每个队列可以有一个消费者,接收消息进行消费逻辑

应用场景:邮件群发,广告

4. 路由模式 routing

消息中间件挤压监控 消息中间件的工作模式_消息中间件挤压监控_04

  1. 生产者还是将消息发送给交换机,消息携带具体的路由key(routingKey)
  2. 交换机类型direct,将接收到的消息中的routingKey,比对与之绑定的队列的routingKey
  3. 消费者监听一个队列,获取消息,执行消费逻辑

应用场景:根据生产者的要求发送给特定的一个或者一批队列;错误的通报;

5. 主题订阅模式 topic

消息中间件挤压监控 消息中间件的工作模式_资源调度_05

  1. 生产端发送消息,消息携带具体的路由key
  2. 交换机的类型topic
  3. 队列绑定交换机不在使用具体的路由key而是一个范围值

bindingkey可以使用通配符 * # 代表通配符 , . 分隔符
• * 代表一个单词
• #代表零个或多个单词

topic主题模式和路由模式区别:

  • 路由模式中的queue绑定携带的是具体的key值,路由细化划分
  • topic主题模式queue携带的是范围的匹配,某一类的消息获取