• RabbitMQ的六种工作模式


    十年河东,十年河西,莫欺少年穷

    学无止境,精益求精

    上篇博客 NetCore RabbitMQ 简介及兔子生产者、消费者 中实现了简单模式 和 work工作模式,其中work 工作模式只需增加消费者,也就是多个消费者竞争生产者生产的消息,例如生产者生产100条消息,那么各个消费者消费消息的总数加起来一定是100.

    下面直接抄袭的别人的博客,简单介绍下RabbitMQ 的六种工作模式

    1.1 simple简单模式

    在这里插入图片描述

    1. 消息产生着§将消息放入队列
    2. 消息的消费者(consumer) 监听(while) 消息队列,如果队列中有消息,就消费掉,消息被拿走后,自动从队列中删除(隐患 消息可能没有被消费者正确处理,已经从队列中消失了,造成消息的丢失)应用场景:聊天(中间有一个过度的服务器;p端,c端)
    1.2 work工作模式(资源的竞争)

    在这里插入图片描述

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

    在这里插入图片描述

    1. X代表交换机rabbitMQ内部组件,erlang 消息产生者是代码完成,代码的执行效率不高,消息产生者将消息放入交换机,交换机发布订阅把消息发送到所有消息队列中,对应消息队列的消费者拿到消息进行消费
    2. 相关场景:邮件群发,群聊天,广播(广告)
    1.4 routing路由模式

    在这里插入图片描述

    1. 消息生产者将消息发送给交换机按照路由判断,路由是字符串(info) 当前产生的消息携带路由字符(对象的方法),交换机根据路由的key,只能匹配上路由key对应的消息队列,对应的消费者才能消费消息;
    2. 根据业务功能定义路由字符串
    3. 从系统的代码逻辑中获取对应的功能字符串,将消息任务扔到对应的队列中业务场景:error 通知;EXCEPTION;错误通知的功能;传统意义的错误通知;客户通知;利用key路由,可以将程序中的错误封装成消息传入到消息队列中,开发者可以自定义消费者,实时接收错误;
    1.5 topic 主题模式(路由模式的一种)

    在这里插入图片描述

    1. 星号井号代表通配符
    2. 星号1个字符井号代表0个或多个字符
    3. 路由功能添加模糊匹配
    4. 消息产生者产生消息,把消息交给交换机
    5. 交换机根据key的规则模糊匹配到对应的队列,由队列的监听消费者接收消息消费
  • 相关阅读:
    CodeForces Round #678(Div2) E.Complicated Computations Mex性质,权值线段树
    P6075 子集选取 思维
    HDU-4747 Mex 线段树应用 Mex性质
    P1273 有线电视网 树形DP 树上背包
    P6786 GCDs & LCMs 数学推导
    [CTSC1997] 选课 树上背包
    Gym-101915K Poor Ramzi 区间DP
    [MdOI R2] Odyssey 拓扑排序上DP
    CodeForces Div3.F
    二分-B
  • 原文地址:https://www.cnblogs.com/chenwolong/p/16505765.html
Copyright © 2020-2023  润新知