1. 概述
RabbitMQ 是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成,因此也是继承了这些优点。
FROM 《维基百科 —— RabbitMQ》
Rabbit 科技有限公司开发了 RabbitMQ ,并提供对其的支持。起初,Rabbit 科技是 LSHIFT 和 CohesiveFT 在 2007 年成立的合资企业,2010 年 4 月 被 VMware 的旗下的 SpringSource 收购。RabbitMQ 在 2013 年 5 月成为 GoPivotal 的一部分。
- 这么一看,Spring Cloud 在消息队列主推 RabbitMQ ,可能还是有原因的,嘿嘿。
2. 安装RabbitMQ
- 单机docker安装rabbitmq
//下载RabbitMQ镜像
docker pull rabbitmq:management
//启动
docker run --name rabbit --restart=always -p 15672:15672 -p 5672:5672 -d rabbitmq:management
RabbitMQ,默认guest用户,密码也是guest。java
- 集群部署
- 《RabbitMQ 单机多实例配置》 ,适合本地测试。
- 《RabbitMQ 的安装及集群搭建方法》的「2. RabbitMQ 集群搭建方法」 小节,适合生产环境。
docker修改rabbitmq密码,参考Docker修改MySQL,RabbitMQ,Redis密码_docker修改redis密码_JiuYou2020的博客-CSDN博客
3. RabbitMQ-SpringBoot
在 Spring 生态中,提供了 Spring-AMQP 项目,让我们更简便的使用 AMQP 。其官网介绍如下:
-
The Spring AMQP project applies core Spring concepts to the development of AMQP-based messaging solutions. Spring-AMQP 项目将 Spring 核心概念应用于基于 AMQP 的消息传递解决方案的开发。
-
It provides a "template" as a high-level abstraction for sending and receiving messages.
它提供了一个“模板”作为发送消息的高级抽象。
-
It also provides support for Message-driven POJOs with a "listener container".
它还通过“侦听器容器”为消息驱动的 POJO 提供支持。
-
These libraries facilitate management of AMQP resources while promoting the use of dependency injection and declarative configuration.
这些库促进 AMQP 资源的管理,同时促进使用依赖注入和声明性配置。
-
In all of these cases, you will see similarities to the JMS support in the Spring Framework.
在所有这些情况下,您将看到与 Spring 框架中的 JMS 支持的相似之处。
-
The project consists of two parts; spring-amqp is the base abstraction, and spring-rabbit is the RabbitMQ implementation. 该项目包括两个部分:
-
spring-amqp
是 AMQP 的基础抽象。 -
spring-rabbit
是基于 RabbitMQ 对 AMQP 的具体实现。
-
Features(功能特性)
- Listener container for asynchronous processing of inbound messages 监听器容器:异步处理接收到的消息
- RabbitTemplate for sending and receiving messages RabbitTemplate:发送和接收消息
- RabbitAdmin for automatically declaring queues, exchanges and bindings RabbitAdmin:自动创建队列,交换器,绑定器。
在 Spring-Boot 项目中,提供了 AMQP 和 RabbitMQ 的自动化配置,所以我们仅需引入 spring-boot-starter-amqp
依赖,即可愉快的使用。
- AMQP 里主要要说两个组件:Exchange 和 Queue ,绿色的 X 就是 Exchange ,红色的是 Queue ,这两者都在 Server 端,又称作 Broker ,这部分是 RabbitMQ 实现的。
- 而蓝色的则是客户端,通常有 Producer 和 Consumer 两种类型(角色)。
3.1 快速入门
代码地址:learning/rabbitmq/rabbitmq-springboot-quickstart at master · JiuYou2020/learning (github.com)
配置文件:
spring:
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
3.1.1 Direct Exchange
Direct 类型的 Exchange 路由规则比较简单,它会把消息路由到那些 binding key 与 routing key 完全匹配的 Queue 中。以下图的配置为例:
- 我们以
routingKey="error"
发送消息到 Exchange ,则消息会路由到 Queue1(amqp.gen-S9b…
) 。 - 我们以
routingKey="info"
或routingKey="warning"
来发送消息,则消息只会路由到 Queue2(amqp.gen-Agl…
) 。 - 如果我们以其它 routingKey 发送消息,则消息不会路由到这两个 Queue 中。
- 总结来说,指定 Exchange + routing key ,有且仅会路由到至多一个 Queue 中。 标签:消费,AMQP,Spring,RabbitMQ,实例,rabbitmq,详细,Consumer,消息 From: https://www.cnblogs.com/jiuyou2020/p/17694590.html