RabbitMQ由浅到深

本文详细介绍了RabbitMQ的基本概念,包括Producer、message、Broker、VHost、Exchange、Queue、Binding和Router-key。阐述了RabbitMQ的整体流程,并提供了在Linux环境下安装的步骤。接着讲解了RabbitMQ的使用,包括基础配置、创建Exchange、Queue和Binding,以及发送和接收消息的方法。此外,还深入探讨了消息的可靠投递机制,包括ConfirmCallback和ReturnCallback的使用,以及消费端的ack确认策略。
摘要由CSDN通过智能技术生成

一、基本概念及安装

1、基本概念

1.1、Producer生产者

负责生产消息,与Borker消息代理建立连接进行推送消息

1.2、message消息

要发送的消息,并携带上router-key路由键和VHost

1.3、Broker消息代理

接收生产者的消息,根据message中的VHost将消息发给指定虚拟主机

1.4、VHost虚拟主机

类似于一台服务器,可定制dev和prod进行切换。由Vhost指定exchange交换机

1.5、Exchange交换机

将消息根据router-key发送到对应queue队列中,且可以有多台交换机

DirectExchange:满足router-key进行转发(精确匹配)
FanoutExchange:给所有的队列进行转发(无视路由键)
TopicExchange:模糊匹配router-key进行转发(模糊匹配)

1.6、Queue队列

用于存储具体的message消息,并向消费者提供推送服务

1.7、Binding绑定

将Exchange和Queue或Exchange进行绑定,并设置路由键

1.8、Router-key路由键

通过router-key判断message由exchange发送到哪些queue中。
*:表示匹配任意一个单词
#:表示匹配任意一个或多个单词

2、整体流程图

在这里插入图片描述

3、linux下安装

docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 rabbitmq:management
# 开机自启
docker update rabbitmq --restart=always

二、使用

1、基础配置

1.1、引入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
    <version>2.1.8.RELEASE</version>
</dependency>

1.2、引入依赖之后,RabbitAutoConfiguration会自动生效

1)、给容器中自动配置了CachingConnectionFactoryRabbitTemplateAmqpAdminRabbitMessagingTemplate
2)、配置类在:RabbitProperties
          @ConfigurationProperties(prefix = "spring.rabbitmq")
          public class RabbitProperties {
   

1.3、编写配置:spring.rabbitmq 信息

spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.virtual-host=/

1.4、开启@Enabled注解

@EnableRabbit
@SpringBootApplication
public class RabbitmqApplication {
   

2、创建Exchange、Queue、Binding

2.1、引入AmqpAdmin

@Autowired
AmqpAdmin amqpAdmin;

2.2、创建Exchange

// String name【交换机名称】,
// boolean durable【是否持久化】,
// boolean autoDelete【是否自动删除】,
// Map<String, Object> arguments
DirectExchange directExchange = new DirectExchange("java-hello-exchange",true,false);
amqpAdmin.declareExchange(directExchange);
System.out.println("创建Exchange成功");

2.3、创建Queue

//String name, boolean durable, boolean exclusive, boolean autoDelete, Map<String, Object> arguments
Queue queue = new Queue("java-hello-queue",true,false,false);
amqpAdmin.declareQueue(queue);
System.out.println("【java-hello-queue】创建完成!");

2.4、创建Binding

//String destination 【目的地】,
// DestinationType destinationType【目的地类型】,
// String exchange【交换机】,
// String routingKey【路由键】,
// Map<String, Object> arguments
// 将指定的队列绑定到指定的交换机,并设置router-key
Binding binding = new 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值