环境
示例工程基于 springboot 2.2.6.RELEASE 和 spring-boot-starter-amqp 。
视频
RabbitMQ 简化概念
学习使用新工具组件的使用,不能一开始就太深入、太复杂,门槛太高不利于学习入门,应该先摒弃一些暂不影响使用或和上层应用无关的知识点,降低坡度,上手之后再慢慢深入去学习。

-
Message 消息
消息包含内容和Routing key、以及其他属性,消息发送者需要指定Routing key。 -
Exchange 交换机
消息发送者总是把消息发往交换机,根据Exchange类型 和Binding key将消息投递到Queue,最后抵达接收者。如果未显式指定
Exchange,则会发送到default exchange,default exchange会将消息投递到与routing key同名的Queue。Exchange常用类型:-
direct
完全匹配。消息中的Routing key和Binding的 key 一致,才会匹配转发给Queue。 -
topic
模式匹配。和direct类似,但topic支持通配符匹配:*表示一个单词,#表示任意多个单词。
如:*.system可以匹配user.system、menu.system。 -
fanout
广播模式。所有消息都会被投递到绑定了该Exchange的Queue,和Routing key无关。
-
-
Queue 队列
消息接收者从Queue获取消息。同一个Queue的接收者共同消费队列消息,即一条消息只会被其中一个接收者消费。 -
Binding 绑定 将
Exchange和Queue绑定起来,根据不同的Exchange类型,消息会被投递到不同的Queue,一条消息可以被投递到多个Queue中。
单服务单节点接收

只需要让服务的多个节点监听同一个 Queue ,即可实现每条消息只被其中一个节点接收。
多服务单节点接收

每个服务集群各自监听一个 Queue,两个 Queue 用同样的 key 绑定到 Exchange ,这样每条消息都会被投递到两个 Queue,最终被节点接收。
广播

每个节点独立监听一个Queue,Exchange 类型为 fanout,每条消息都会被投递到所有 Queue 达到广播的效果。实际可以采用匿名、自动删除的 Queue 来实现。
docker 安装RabbitMQ
用 docker 可以快速搭建学习需要的各类环境,无须处理复杂的环境问题,开箱即用,是学习中间件的必备工具。docker 环境下,可以通过以下命令快速安装 RabbitMQ:
docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management
其中 5672 是 rabbitMQ 的服务端口,15672 是 web 管理端口,可以通过浏览器访问,默认用户名/密码: guest/guest
示例中完整的源码: mq-learning