RabbitMQ各种交换机机制,代码实践篇

点击上方Java后端技术之路”,选择“置顶或者星标

与你一起成长

本文主要是实践建议大家下载下来代码走一遍,代码地址在文末。

问题:

首先带着下面几个问题来展开讨论:

1、有哪几种交换器(channel)。

2、direct交换器一个队列绑定多个交换器会什么样子。

3、direct交换器一个连接多个信道会什么样子。

4、direct交换器多个消费者消费一个队列会如何。

5、direct交换器多个队列绑定一个信道会如何。

6、topic交换器如何订阅,*#什么区别。

7、Fanout交换器什么机制。

下面我们根据代码实践来讨论上面几个问题。

客户端与RabbitMQ通讯

1、引入jar

 

RabbitMQ各种交换机机制,代码实践篇_第1张图片

2、建立连接

创建连接工厂 设置地址 设置端口号 需要登录的设置密码 新建连接

RabbitMQ各种交换机机制,代码实践篇_第2张图片

3、创建信道channel

生产者消费上面12步骤代码都一样,只有3步骤会有部分差异,具体如下:

生产者:创建信道 绑定交换路由 绑定队列(非必须生产者消费者两遍谁做都可以) 发布消息

RabbitMQ各种交换机机制,代码实践篇_第3张图片

消费者:创建信道 在信道中绑定交换器 设置队列 绑定路由 声明一个消费者 正式指定队列消费

 RabbitMQ各种交换机机制,代码实践篇_第4张图片

 

 

针对疑问做解答

疑问1:有哪几种交换机

共有四种 direct,fanout,topic,headers,其中 headers(几乎和 direct 一样)不实用,可以忽略。

具体可以参见上篇文章:MQ第一节

疑问2:direct交换器一个队列绑定多个交换器会什么样子。

一个队列绑定多个交换器,会收到每个交换器的消息。

代码演示如下:

生产者:

RabbitMQ各种交换机机制,代码实践篇_第5张图片

消费者:

RabbitMQ各种交换机机制,代码实践篇_第6张图片

运行结果:

RabbitMQ各种交换机机制,代码实践篇_第7张图片

 RabbitMQ各种交换机机制,代码实践篇_第8张图片

从实例中明显发现收到了每个路由的消息。

疑问3:direct交换器一个连接多个信道会什么样子

一个连接多个信道每个连接都会收到消息。

疑问4:direct交换器多个消费者消费一个队列会如何。

多个消费者消费一个队列会轮询消费。也就是多个消费者消费的数据加起来等于一个队列里面的数据

 RabbitMQ各种交换机机制,代码实践篇_第9张图片

疑问5:direct交换器多个队列绑定一个信道会如何。

每个队列都会收到信道的所有消息

疑问6:topic交换器如何订阅,*与#什么区别。

*匹配一个,#匹配多个

疑问7:Fanout交换器什么机制。

广播机制,队列绑定一个信道会收到所有消息,和绑定全部信道是一样的。

代码地址

建议大家down下来代码跑一边理解一下。

https://github.com/SunSmileAZY/mq-study


往期推荐:

消息中间件(MQ)与AMQP

MQ消息队列常见面试题详解


面试精选

MQ消息队列常见面试题详解

Redis常见面试题详解

备战2020,十四道Mybatis常见面试题!!!

十二道Spring常见面试题

Spring 常见面试题一,助你2020 ,come on

微服务面试题 - Spring Cloud

备战2020面试题,Java面试题下(锁、AQS、线程池)

备战2020,Java基础面试题上(String、各种集合、hashMap)

你可能感兴趣的:(RabbitMQ各种交换机机制,代码实践篇)