RabbitMQ 快速上手教程 ~

本文前置知识

  • 云服务器的基本使用
  • Docker 基本命令
  • Spring Boot

Docker 搭建 RabbitMQ 环境

为了方便,采用 Docker 进行安装,直接从仓库拉取即可(首先要在 Liunx 中安装 Docker 环境)。命令如下:

1、查找 rabbitmq 镜像

docker search rabbitmq:management

2、拉取 rabbitmq 镜像

docker pull macintoshplus/rabbitmq-management

3、创建容器并运行

docker run -d --name rbmq -e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=guest -p 15672:15672 -p 5672:5672 c20

4、访问测试:浏览器输入 http://服务器ip:15672。注意:阿里云防火墙、Linux 端口都要开放,才可访问。

RabbitMQ 快速上手教程 ~_第1张图片
输入用户名与密码:都为 guest

登录成功后,即可看到 rabbitmq 的管理界面。

RabbitMQ 快速上手教程 ~_第2张图片

SpringBoot 整合 RabbitMQ

RabbitMQ 可以很方便地与 SpringBoot 整合。

1、导入 Maven 依赖:

		<dependency>
			<groupId>org.springframework.bootgroupId>
			<artifactId>spring-boot-starter-amqpartifactId>
		dependency>

2、配置文件中指定 rabbitmq 相关参数:

spring:
  application:
    name: rabbitmq-demo
  rabbitmq:
    host: 服务器公网ip
    port: 5672
    username: guest
    password: guest

3、写一个配置类,将队列注入到 Spring 容器中,同时定义好队列的名称:

import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class QueueConfig {
    public static final String QUEUE_NAME = "myQueue";
    @Bean
    public Queue createQueue() {
        return new Queue(QueueConfig.QUEUE_NAME);
    }
}

4、消费者处理消息:添加 @RabbitListener 注解并指定要监听的队列名称

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

@Component
public class Consumer {
    @RabbitListener(queues = {QueueConfig.QUEUE_NAME})
    public void handle(String msg) {
        // 消费者处理接收到的消息
        System.out.println("消费者处理消息:" + msg);
    }
}

5、生产者发送消息:引入 AmqpTemplate 模板类实现整合

import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class Provider {
    @Autowired
    private AmqpTemplate template;
    public void send(String msg) {
        // 生产者发送消息:队列名称,消息内容
        template.convertAndSend(QueueConfig.QUEUE_NAME, msg);
    }
}

6、启动 SpringBoot 项目,消费者进入监听状态,查看 rabbitmq 管理界面如下:

RabbitMQ 快速上手教程 ~_第3张图片
连接数、队列数、消费者数都从 0 变为 1。

还可以查看到我们刚刚定义的队列名称信息:

RabbitMQ 快速上手教程 ~_第4张图片
队列名称为 myQueue

7、JUnit 进行测试:生产者发送消息

import com.study.rbmq.Provider;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class SpringbootDockerApplicationTests {
	@Autowired
	private Provider provider;
	@Test
	void contextLoads() {
		provider.send("RabbitMQ入门案例~");
	}
}

运行测试程序,在 SpringBoot 程序的控制台中可看到如下结果:

RabbitMQ 快速上手教程 ~_第5张图片
生产者发送消息到队列后,消费者监听到该消息,对其进行处理。

总结

  • 消息队列具有三大核心特性:解耦、异步、削峰。RabbitMQ 是其中的一种,具有低延迟的特点,性能极好。
  • 由于 RabbitMQ 基于 Erlang 语言开发,安装环境首先需要下载 Erlang,而采用 Docker 可以帮助我们省略这些繁琐的步骤。
  • 最后,RabbitMQ 可以很方便地与 SpringBoot 整合,开箱即用。

你可能感兴趣的:(RabbitMQ,消息队列,rabbitmq,spring,boot)