• RabbitMQ的几种工作模式


    maven:

        <dependencies>
            <!-- RabbitMQ的客户端 -->
            <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>
    
        </dependencies>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    1、Work模式 
    这里写图片描述

    一个生产者,多个消费者,每个消费者获取到的消息唯一。

    1、  自动模式
        消费者从消息队列获取消息后,服务端就认为该消息已经成功消费。
    2、  手动模式
        消费者从消息队列获取消息后,服务端并没有标记为成功消费
        消费者成功消费后需要将状态返回到服务端
    • 1
    • 2
    • 3
    • 4
    • 5

    2、订阅模式 
    这里写图片描述

    一个生产者发送的消息会被多个消费者获取。 
    生产者:可以将消息发送到队列或者是交换机。 
    消费者:只能从队列中获取消息。 
    如果消息发送到没有队列绑定的交换机上,那么消息将丢失。

    3、路由模式 
    这里写图片描述

    1、 发送消息到交换机并且要指定路由key 
    2、 消费者将队列绑定到交换机时需要指定路由key

    4、通配符模式 
    这里写图片描述

    将路由键和某模式进行匹配,此时队列需要绑定在一个模式上,“#”匹配一个词或多个词,“*”只匹配一个词。

    5、RPC模式 
    这里写图片描述

    (RPC) Remote Procedure Call Protocol 远程过程调用协议

    在一个大型的公司,系统由大大小小的服务构成,不同的团队维护不同的代码,部署在不同的机器。但是在做开发时候往往要用到其它团队的方法,因为已经有了实现。但是这些服务部署不同的机器上,想要调用就需要网络通信,这些代码繁琐且复杂,一不小心就会写的很低效。RPC协议定义了规划,其它的公司都给出了不同的实现。比如微软的wcf,以及现在火热的WebApi。

    在RabbitMQ中RPC的实现也是很简单高效的,现在我们的客户端、服务端都是消息发布者与消息接收者。

    首先客户端通过RPC向服务端发出请求

    我这里有一堆东西需要你给我处理一下,correlation_id:这是我的请求标识,erply_to:你处理完过后把结果返回到这个队列中。

    服务端拿到了请求,开始处理并返回

    correlation_id:这是你的请求标识 ,原封不动的给你。 这时候客户端用自己的correlation_id与服务端返回的id进行对比。是我的,就接收。

  • 相关阅读:
    经典矩阵快速幂之一-----poj3233(矩阵套矩阵
    hdu 2588(简单的欧拉
    新能源汽车无线充电管理网站1
    结对项目:黄金点游戏(何珠&赵艳)
    WC项目,实现一个统计程序
    简单四则运算
    在一周之内,快速看完整部教材,列出你不懂的5-10个问题。
    博客作业——创建个人技术博客(建议在cnblogs.com上创建),并写一个自我介绍,列出你对这门课的希望和自己的目标。同时具体列出你计划每周花多少时间在这门课上(包括上课时间)。
    能自动生成小学四则运算题目
    在一周之内,快速看完整部教材,列出你不懂的5-10个问题。
  • 原文地址:https://www.cnblogs.com/zxtceq/p/8559100.html
Copyright © 2020-2023  润新知