SpringBoot整合RabbitMQ(最新笔记)

这篇具有很好参考价值的文章主要介绍了SpringBoot整合RabbitMQ(最新笔记)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SpringBoot整合RabbitMQ

1.生产者SpringBootProducer

1.2 创建工程并导入依赖

我们使用的springboot版本为2.5.6,其他都是根据spring-boot-starter-parent自动选择版本

引入以下工程即可

  • spring-boot-starter-test 用于测试
  • junit 用于单元测试
  • spring-boot-starter-amqp SpringBoot和RabbitMQ的整合方案
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.6</version>
        <relativePath/>
    </parent>

    <artifactId>springboot-producer</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

1.2 创建配置文件并配置

SpringBoot配置文件名称为application.yml

需要配置的内容如下:

# 配置RabbitMQ的基本信息
spring:
  rabbitmq:
    # 地址
    host: 192.168.52.128
    # 端口
    port: 5672
    # 用户名
    username: admin
    # 密码
    password: admin
    # 虚拟机
    virtual-host: /test

1.3 创建项目启动类

@SpringBootApplication
public class ProducerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProducerApplication.class, args);
    }
}

1.4 创建RabbitMQ配置类

@Configuration
public class RabbitMQConfig {
	// 配置代码都写在这里
}

(1)设置默认的交换机的名称和队列名称

/**
 * 默认测试的交换机机名称
 * springboot_topic_exchange
 */
public static final String EXCHANGE_NAME = "springboot_topic_exchange";

/**
 * 默认的队列名称
 * springboot_root_queue
 */
public static final String QUEUE_NAME = "springboot_root_queue";

(2)创建通配符类型的交换机

/**
 * 创建交换机
 *
 * @return 交换机
 */
@Bean("bootExchange")
public Exchange bootExchange() {
    // 创建一个通配符的交换机
    return ExchangeBuilder.topicExchange(EXCHANGE_NAME).durable(true).build();
}

这里需要在bean上加上名称(虽然如果没有时会使用方法名,但是严谨),便于之后交换机和队列绑定操作。

除了通配符交换机外,还支持广播型交换机定向型交换机

  • 广播型交换机
@Bean("fanoutExchange")
public Exchange fanoutExchange() {
    return ExchangeBuilder.fanoutExchange("fanout_exchange").durable(true).build();
}
  • 定向型交换机
@Bean("directExchange")
public Exchange directExchange() {
    return ExchangeBuilder.directExchange("direct_exchange").durable(true).build();
}

(3)创建一个队列

/**
 * 创建队列
 *
 * @return 队列
 */
@Bean("bootQueue")
public Queue bootQueue() {
    return QueueBuilder.durable(QUEUE_NAME).build();
}

(4)绑定交换机和队列

/**
 * 绑定队列和交换机
 * 主要:队列、交换机、routing key
 *
 * @return 绑定关系
 */
@Bean
public Binding bindingQueueExchange(@Qualifier("bootQueue") Queue queue, @Qualifier("bootExchange") Exchange exchange) {
    return BindingBuilder.bind(queue).to(exchange).with("boot.#").noargs();
}

(5)完整配置类

@Configuration
public class RabbitMQConfig {

    /**
     * 默认测试的交换机机名称
     * springboot_topic_exchange
     */
    public static final String EXCHANGE_NAME = "springboot_topic_exchange";

    /**
     * 默认的队列名称
     * springboot_root_queue
     */
    public static final String QUEUE_NAME = "springboot_root_queue";

    /**
     * 创建交换机
     *
     * @return 交换机
     */
    @Bean("bootExchange")
    public Exchange bootExchange() {
        // 创建一个通配符的交换机
        return ExchangeBuilder.topicExchange(EXCHANGE_NAME).durable(true).build();
    }
    

    /**
     * 创建队列
     *
     * @return 队列
     */
    @Bean("bootQueue")
    public Queue bootQueue() {
        return QueueBuilder.durable(QUEUE_NAME).build();
    }

    /**
     * 绑定队列和交换机
     * 主要:队列、交换机、routing key
     *
     * @return 绑定关系
     */
    @Bean
    public Binding bindingQueueExchange(@Qualifier("bootQueue") Queue queue, @Qualifier("bootExchange") Exchange exchange) {
        return BindingBuilder.bind(queue).to(exchange).with("boot.#").noargs();
    }

}

1.5 测试发送消息

@SpringBootTest
@RunWith(SpringRunner.class)
public class ProducerTest {
    @Autowired
    private RabbitTemplate rabbitTemplate;

    @Test
    public void testSend() {
        rabbitTemplate.convertAndSend(RabbitMQConfig.EXCHANGE_NAME, "boot.name", "Spring Boot RabbitMQ");
    }
}

2.消费者SpringBootConsumer

2.1 创建工程并导入依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.6</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>springboot-consumer</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-consumer</name>
    <description>springboot-consumer</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.amqp</groupId>
            <artifactId>spring-rabbit-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

PS:以上依赖是由springboot工程创建完成,和之前手动创建没有本质差别

2.2 创建配置文件并配置

SpringBoot配置文件名称为application.yml

需要配置的内容如下:

# 配置RabbitMQ的基本信息
spring:
  rabbitmq:
    # 地址
    host: 192.168.52.128
    # 端口
    port: 5672
    # 用户名
    username: admin
    # 密码
    password: admin
    # 虚拟机
    virtual-host: /test

2.3 创建项目启动类

@SpringBootApplication
public class ConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }

}

2.3 创建监听器

@Component
public class RabbitMQListener {

    @RabbitListener(queues = "springboot_root_queue")
    public void listenerQueue(Message message) {
        System.out.println("RabbitMQListener:" + new String(message.getBody()));
    }
}

@RabbitListener表示当前方法监听对应的队列,并且支持多队列。

2.4 run

控制台如下:

RabbitMQListener:Spring Boot RabbitMQ文章来源地址https://www.toymoban.com/news/detail-450276.html

到了这里,关于SpringBoot整合RabbitMQ(最新笔记)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot整合RabbitMQ(基础)

    一.环境准备 1、在pom文件中引入对应的依赖: 2、在application.yml配置文件中配置RabbitMQ: 二、整合 点对点,简单模式 ①配置文件中声明队列 ②创建生产者 消息发送成功后,在web管理页面查看: 可以看到对应队列中产生了消息 ③创建消费者 启动项目,可以看到消息成功消费:

    2024年02月11日
    浏览(36)
  • 单个springboot整合rabbitmq

    rabbitmq是一种消息中间件,是基于erlang语言开发的AMQP(高级消息队列协议)的开源实现。 本质是个队列,FIFO先入先出。 1.1.1 rabbitmq特性: 开源,性能优秀,稳定保障 提供可靠的消息投递模式,返回模式 于Spring AMQP完美整合,API丰富 集群模式丰富 高可用 1.1.2 rabbitmq主要结构 生产

    2024年02月10日
    浏览(65)
  • SpringBoot整合实现RabbitMQ

    本文大纲 一.RabbitMQ介绍 二.RabbitMQ的工作原理 2.1 RabbitMQ的基本结构 2.2 组成部分说明 2.3 生产者发送消息流程 2.4 消费者接收消息流程 三.SpringBoot 整合实现RabbitMQ 3.1创建mq-rabbitmq-producer(生产者)发送消息 3.1.1pom.xml中添加相关的依赖 3.1.2 配置application.yml 3.1.3 配置RabbitMQ常量类

    2024年02月17日
    浏览(43)
  • SpringBoot 整合RabbitMQ

    2007 年发布,是一个在 AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一。 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue 高级消息队列协议 )的开源实现,由于erlang 语言的高并发特性,性能较好,本质是个队列,FIFO 先入先出

    2024年02月15日
    浏览(51)
  • RabbitMQ整合Springboot

    目录 一、配置 二、使用 (1)创建普通交换机 (2) 创建普通队列 (3)绑定 交换机--队列 (4)创建带有死信交换机的队列 (5)生产者 (6)消费者 (7)Message对象 (8)延时队列优化(死信实现延时,有缺陷) 三、Rabbitmq插件实现延迟队列(重点) 四、发布确认 (1)确认回调

    2024年02月15日
    浏览(40)
  • SpringBoot项目整合RabbitMQ

    消息队列(Message Queue)是分布式系统中常用的组件,它允许不同的应用程序之间通过发送和接收消息进行通信。Spring Boot提供了简单且强大的方式来整合消息队列,其中包括RabbitMQ、ActiveMQ、Kafka等多种消息队列实现。 本文将以RabbitMQ为例,详细介绍如何使用Spring Boot来整合消

    2024年02月09日
    浏览(53)
  • SpringBoot整合RabbitMQ

    🙈作者简介:练习时长两年半的Java up主 🙉个人主页:程序员老茶 🙊 ps:点赞👍是免费的,却可以让写博客的作者开心好久好久😎 📚系列专栏:Java全栈,计算机系列(火速更新中) 💭 格言:种一棵树最好的时间是十年前,其次是现在 🏡动动小手,点个关注不迷路,感

    2024年02月21日
    浏览(43)
  • SpringBoot 整合 RabbitMQ demo

    Rabbit Windows安装教程 本文只做Demo案例的分享,具体知识需自行百度 1.application.properties 配置Rabbit的基本信息 2.pom文件 导入两个maven依赖 第一个是SpringBoot集成的rabbit 第二个是web依赖,用来方便发消息 3.Rabbit配置类 这里用的是主题模式,也就是模糊匹配的模式 这里设置的是只

    2024年02月17日
    浏览(42)
  • RabbitMQ和Springboot整合(高阶)

    我们该如何确保MQ消息的可靠性 ? 如果真的发送失败,有没有其它的兜底方案? 这些问题,在今天的学习中都会找到答案。 首先,我们一起分析一下消息丢失的可能性有哪些。 消息从发送者发送消息,到消费者处理消息,需要经过的流程是这样的: 消息从生产者到消费者

    2024年02月22日
    浏览(48)
  • springboot整合rabbitmq死信队列

    什么是死信 需要测试死信队列,则需要先梳理整体的思路,如可以采取如下方式进行配置: 从上面的逻辑图中,可以发现大致的思路: .1. 消息队列分为正常交换机、正常消息队列;以及死信交换机和死信队列。 2. 正常队列针对死信信息,需要将数据 重新 发送至死信交换机

    2024年02月11日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包