zoukankan      html  css  js  c++  java
  • Rabbitmq的五种模式和案例

    消息生产者p将消息放入队列

    消费者监听队列,如果队列中有消息,就消费掉,消息被拿走后,自动从队列删除

    (缺点:消息可能没有被消费者正确处理,已经消失了,无法恢复)

    应用场景:聊天室

    1.引入依赖

    <dependencies>
    <dependency>
    <groupId>com.rabbitmq</groupId>
    <artifactId>amqp-client</artifactId>
    <version>3.4.1</version>
    </dependency>
    <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.7</version>
    </dependency>
    <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.3.2</version>
    </dependency>

    <dependency>
    <groupId>org.springframework.amqp</groupId>
    <artifactId>spring-rabbit</artifactId>
    <version>1.4.0.RELEASE</version>
    </dependency>
    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
    </dependency>
    </dependencies>
    2.创建链接工具类

    3.生产者

    4.消费者

    生产者将消息放入队列
    多个消费者同时监听同一个队列,消息如何被消费?
    C1,C2共同争抢当前消息队列的内容,谁先拿到消息,谁来负责消费
    应用场景:红包;大型项目中的资源调度过程(直接由最空闲的系统争抢到资源处理任务) 
    1.生产

    2.消费1

    3.消费2

    生产者将消息交给交换机
    有交换机根据发布订阅的模式设定将消息同步到所有的绑定队列中;
    后端的消费者都能拿到消息

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

    1.生产者

    2.消费者1

    2.消费2

    
    

    生产者发送消息到交换机,同时绑定一个路由Key,交换机根据路由key对下游绑定的队列进行路
    由key的判断,满足路由key的队列才会接收到消息,消费者消费消息

    应用场景: 项目中的error报错

    1.生产者

    2.消费者1

    2.消费者2

    *号代表单个词语
    #代表多个词语

    其他的内容与routing路由模式一致

    1.生产者

    2.消费者1

    3.消费者2

  • 相关阅读:
    关于action的使用在firefox报错的问题
    用rspec执行自动化测试用例
    webdriver实现简单的窗口切换
    一个小测试总结
    在Notepad++下运行ruby代码
    webdriver入门之环境准备
    我也来谈谈小米——《参与感》观后感
    测试发展生涯的困惑
    小谈关于互联网产品的测试
    转:API 接口渗透测试
  • 原文地址:https://www.cnblogs.com/xyj179/p/10346515.html
Copyright © 2011-2022 走看看