RabbitMQ 工作流程详解,其实也没有那么复杂

本文详细介绍了RabbitMQ的工作流程,包括生产者如何将消息发送到交换机,交换机如何通过路由键将消息存储到队列,以及消费者如何消费消息。文章还重点讨论了RabbitMQ的消息确认机制,包括生产者和消费者的确认机制,以防止消息丢失。通过示例代码展示了如何配置和使用这些机制,确保消息正确传递和处理。
摘要由CSDN通过智能技术生成

在项目真正开始之前我们先来简单介绍下 RabbitMQ 的工作流程:

  • 生产者往交换机中发送消息;
  • 交换机通过规则绑定队列,通过路由键将消息存储到队列中;
  • 消费者获取队列中的消息进行消费;

环境:SpringBoot 2.6.3、JDK 1.8

项目搭建

首先创建 SpringBoot 项目 rabbit-mq

  1. 引入依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

复制代码

  1. yml 文件配置
spring:
  rabbitmq:
    host: 127.0.0.1     //rabbitMQ服务地址
    port: 15672   //这个地方暂时先用我们之前配置的15672
    username: cheetah   //自己的账户名
    password: 123456    //自己的密码

复制代码

  1. 直连交换机

本项目以直连交换机为例,至于其他的交换机类型将在后文中给出详细介绍。

@Configuration
public class DirectRabbitConfig {


    /**
     * 定义交换机
     **/
    @Bean
    public DirectExchange directExchange(){
        /**
         * 交换机名称
         * 持久性标志:是否持久化,默认是 true 即声明一个持久的 exchange,该exchange将在服务器重启后继续运行
         * 自动删除标志:是否自动删除,默认为 false, 如果服务器想在 exchange不再使用时删除它,则设置为 true
         **/
        return new DirectExchange("directExchange", true, false);
    }


    /**
     * 定义队列
     **/
    @Bean
    public Queue directQueue(){
        /**
         * name:队列名称
         * durable:是否持久化,默认是 true,持久化队列,会被存储在磁盘上,当消息代理重启时仍然存在
         * exclusive:是否排他,默认为 false,true则表示声明了一个排他队列(该队列将仅由声明者连接使用),如果连接关闭,则队列被删除。此参考优先级高于durable
         * autoDelete:是否自动删除, 默认是 false,true则表示当队列不再使用时,服务器删除该队列
         **/
        return new Queue("directQueue",true);
    }


    /**
     * 队列和交换机绑定
     * 设置路由键:directRouting
     **/
    @Bean
    Binding bindingDirect(){
        return BindingBuilder.bind(directQueue()).to(directExchange()).with("directRouting");
    }




}

复制代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值