SpringBoot整合RabbitMQ:6种模式实战

RabbitMQ下载地址:Downloads - Erlang/OTP

成功登录界面,可查看MQ详情

SpringBoot整合RabbitMQ:6种模式实战_第1张图片

1.rabbitmq介绍

rabbitmq是一种跨进程、异步的通信机制,用于上下游传递消息。由消息系统来确保消息的可靠传递。
     1).rabbitmq的作用: 消峰、异步、解耦
     2).rabbitmq的特点:
          可靠性:通过持久化、传输确认、发布确认等操作保证可靠性
          灵活的路由:在消息进入队列之前,通过Exchange来路由消息
                                对于典型的路由功能,Rabbit已经提供了一些内置的Exchange来实现
                                针对更复杂的路由功能,可以将多个Exchange绑定在一起,也通过插件机制实现自己的Exchange
          消息集群:多个RabbitMQ服务器可以组成一个集群,形成一个逻辑Broker
          高可用:队列可以在集群中的机器上进行镜像,实现故障快速切换
          跟踪机制:如果消息异常,RabbitMQ提供了消息的跟踪机制


2.rabbitmq模块介绍

SpringBoot整合RabbitMQ:6种模式实战_第2张图片

依赖

SpringBoot整合RabbitMQ:6种模式实战_第3张图片

配置 

SpringBoot整合RabbitMQ:6种模式实战_第4张图片

rabbitmq的六种工作模式:
     1).simple简单模式
     一个队列一个消费者
     消费者监听消息队列,消息队列中有消息就消费掉,消息队列中数据也会清除
SpringBoot整合RabbitMQ:6种模式实战_第5张图片

生产者

配置queue_simple队列

SpringBoot整合RabbitMQ:6种模式实战_第6张图片

 发送Message到queue_simple队列(自己用postman发就行)

SpringBoot整合RabbitMQ:6种模式实战_第7张图片

 消费者

监听queue_simple队列

 调用simpleSend接口

SpringBoot整合RabbitMQ:6种模式实战_第8张图片

 消费者控制台

SpringBoot整合RabbitMQ:6种模式实战_第9张图片

 成功消费信息!

 2).work工作模式
     一个队列多个消费者
     c1和c2共同监听一个消息队列,但是一个消息只能被一个消费者消费
SpringBoot整合RabbitMQ:6种模式实战_第10张图片

 生产者

配置queue_work队列

SpringBoot整合RabbitMQ:6种模式实战_第11张图片

 发送10条Message到queue_work队列

SpringBoot整合RabbitMQ:6种模式实战_第12张图片

 消费者

监听queue_work队列.两个消费者同时监听queue_work队列

SpringBoot整合RabbitMQ:6种模式实战_第13张图片

 调用simpleSend接口.查看消费者控制台

SpringBoot整合RabbitMQ:6种模式实战_第14张图片

只能被一个监听者消费!

 3).publish/subscribe发布订阅模式
     生产者将消息不是直接发送到队列,而是发送到交换机,没有路由规则
     然后由交换机发送给两个队列,两个消费者各自监听一个队列,来消费消息
SpringBoot整合RabbitMQ:6种模式实战_第15张图片

生产者 

配置fanOutExchange绑定queue_simple和queue_work队列

SpringBoot整合RabbitMQ:6种模式实战_第16张图片

 发送消息到fanOutExchange交换机

SpringBoot整合RabbitMQ:6种模式实战_第17张图片

 消费者

还是监听queue_simple和queue_work队列

SpringBoot整合RabbitMQ:6种模式实战_第18张图片

 调用fanOutSend接口,消费者控制台如下

 消息被queue_simple和queue_work01消费,因为queue_work和queue_work01监听同一个队列,只能被一个人消费.

 4).routing路由模式
     消息生产者将消息发送给交换机按照路由判断
     交换机根据路由的key,只能匹配上路由key对应的消息队列,对应的消费者才能消费消息
SpringBoot整合RabbitMQ:6种模式实战_第19张图片

 生产者

创建三个队列routing-queue1,routing-queue2,routing-queue3对应不同的routekey:info,waring,error。

SpringBoot整合RabbitMQ:6种模式实战_第20张图片

 发送消息到directExchange

SpringBoot整合RabbitMQ:6种模式实战_第21张图片

消费者

分别对三个队列进行监听

SpringBoot整合RabbitMQ:6种模式实战_第22张图片

 调用routeSend接口

  5).topic 主题模式(模糊的路由规则)
     消息产生者产生消息后把消息交给交换机
     交换机根据key的规则模糊匹配到对应的队列,由队列的监听消费者接收消息消费
SpringBoot整合RabbitMQ:6种模式实战_第23张图片

生产者 

在exchange_topic交换机下创建queue_topic1,queue_topic2队列,匹配单个和多个后缀

 SpringBoot整合RabbitMQ:6种模式实战_第24张图片

发送信息到exchange_topic交换机

SpringBoot整合RabbitMQ:6种模式实战_第25张图片

消费者

监听queue_topic1,queue_topic2

SpringBoot整合RabbitMQ:6种模式实战_第26张图片

 调用sendTopic接口

SpringBoot整合RabbitMQ:6种模式实战_第27张图片

SpringBoot整合RabbitMQ:6种模式实战_第28张图片

第一次发送到exchange_topic交换机,根据route"#"匹配规则(# 零个或多个),可以发送到queue_topic1中.

第二次发送到exchange_topic交换机,根据route"*"匹配规则(单个)和"#"匹配规则(# 零个或多个),可以发送到queue_topic1和queue_topic2中.

所以queue_topic1会收到两次Message,而queue_topic2只能收到一次

 6).RPC(远程过程调用)模式
     RPC模式与 work工作模式差不多(都不需要交换器、都需要指定唯一的消息队列进行消息传递)
     RPC模式是一个回环结构,客户端C先发送消息到消息队列
     远程服务端S获取消息,然后再写入另一个消息队列,向原始客户端 Client 响应消息处理结果

SpringBoot整合RabbitMQ:6种模式实战_第29张图片

你可能感兴趣的:(中间件及第三方工具,rabbitmq,spring,boot,java)