RabbitMQ小结(七)工作模式

RabbitMQ小结(七)工作模式

1.simple简单模式

在这里插入图片描述

  • 消息生产者P将消息放入队列
  • 消息的消费者(consumer) 监听(while) 消息队列,如果队列中有消息,就消费掉,消息被拿走后,自动从队列中删除(可能会有消息的丢失)
  • 应用场景:聊天(中间有一个过度的服务器)

2. work工作模式(资源的竞争)

在这里插入图片描述

  • 消息产生者将消息放入队列,消费者可以有多个,消费者C1和C2同时监听同一个队列。消息被消费者C1和C2共同争抢当前的消息队列内容,谁先拿到谁负责消费消息。
  • 隐患:高并发情况下,默认会产生某一个消息被多个消费者共同使用。可以设置一个开关保证一条消息只能被一个消费者使用。
  • 应用场景:抢红包,大项目中的资源调度(任务分配系统不需知道哪一个任务执行系统在空闲,直接将任务扔到消息队列中,空闲的系统自动争抢)

3.publish/subscribe发布订阅(共享资源)

在这里插入图片描述

  • X代表交换机,消息产生者是代码完成,消息产生者将消息放入交换机,交换机发布订阅把消息发送到所有消息队列中,对应消息队列的消费者拿到消息进行消费
  • 相关场景:邮件群发,群聊天,广播(广告)

4.routing路由模式

在这里插入图片描述

  • 消息生产者将消息发送给交换机按照路由判断,路由是字符串(info) 当前产生的消息携带路由字符(对象的方法),交换机根据路由的key,只能匹配上路由key对应的消息队列,对应的消费者才能消费消息
  • 应用场景:利用key路由,可以将程序中的错误封装成消息传入到消息队列中,可以自定义消费者实时接收错误

5.topic 主题模式(路由模式的一种)

在这里插入图片描述

  • 星号井号代表通配符
  • 星号代表多个单词,井号代表一个单词
  • 路由功能添加模糊匹配
  • 消息产生者产生消息,把消息交给交换机
  • 交换机根据key的规则模糊匹配到对应的队列,由队列的监听消费者接收消息消费

6.RPC

在这里插入图片描述

  • 客户端即是生产者就是消费者,向RPC请求队列发送RPC调用消息,同时监听RPC响应队列
  • 服务端监听RPC请求队列的消息,收到消息后执行服务端的方法,得到方法返回的结果
  • 服务端将RPC方法 的结果发送到RPC响应队列
  • 客户端(RPC调用方)监听RPC响应队列,接收到RPC调用结果
发布了49 篇原创文章 · 获赞 40 · 访问量 3565

猜你喜欢

转载自blog.csdn.net/xueguchen/article/details/104008814