RabbitMQ安装与使用教程(含Spring Boot整合)

RabbitMQ安装与使用教程(含Spring Boot整合)

一、RabbitMQ简介

RabbitMQ是一个开源的消息代理软件,实现了高级消息队列协议(AMQP),在分布式系统中广泛用于异步通信、解耦组件以及流量削峰等场景。它支持多种消息模式,如点对点、发布/订阅等,具备高可靠性、可扩展性和丰富的功能特性。

二、RabbitMQ安装

1. 安装Erlang环境

RabbitMQ是用Erlang语言编写的,因此需要先安装Erlang运行环境。以下以Ubuntu系统为例进行安装:
更新软件包列表
bash sudo apt-get update
安装Erlang
bash sudo apt-get install erlang

2. 安装RabbitMQ

添加RabbitMQ官方仓库
bash echo "deb https://dl.bintray.com/rabbitmq/debian $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/rabbitmq.list
导入仓库密钥
bash wget -O - 'https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc' | sudo apt-key add -
再次更新软件包列表并安装RabbitMQ
bash sudo apt-get update sudo apt-get install rabbitmq-server

3. 启动RabbitMQ服务

启动服务
bash sudo systemctl start rabbitmq-server
查看服务状态
bash sudo systemctl status rabbitmq-server

4. 访问RabbitMQ管理界面

RabbitMQ自带一个方便的管理界面,通过以下命令开启:

sudo rabbitmq-plugins enable rabbitmq_management

然后在浏览器中访问 http://服务器IP地址:15672 ,默认用户名和密码都是 guest ,登录后可以进行各种管理操作。

三、Spring Boot整合RabbitMQ

1. 创建Spring Boot项目

可以使用Spring Initializr(https://start.spring.io/ )快速创建一个Spring Boot项目,在依赖中添加 Spring for RabbitMQ 。在项目创建过程中,选择合适的Java版本和Spring Boot版本,并添加 spring-boot-starter-amqp 依赖。

2. 配置application.properties或application.yml

src/main/resources 目录下的 application.properties (或 application.yml )文件中添加RabbitMQ连接信息:

spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

四、定义一般队列

1. 配置队列

创建一个配置类来定义队列:

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

@Configuration
public class RabbitConfig {
   

    @Bean
    public Queue normalQueue() {
   
        return new Queue("normalQueue", true, false, false);
    }
}

这里创建了一个名为 normalQueue 的队列,true 表示队列持久化(消息在服务器重启后仍存在),第二个 false 表示非排他队列(多个消费者可以同时消费),第三个 false 表示自动删除(消息处理完后队列是否自动删除)。

2. 生产者发送消息

创建一个消息生产者类:

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class NormalQueueProducer {
   

    @Autowired
    private RabbitTemplate rabbitTemplate;

    public void sendMessage(String message) {
   
        rabbitTemplate.convertAndSend("normalQueue", message);
    }
}

3. 消费者接收消息

创建一个消息消费者类:

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

@Service
public class NormalQueueConsumer {
   

    @RabbitListener(queues = "normalQueue")
    public void receiveMessage(String message) {
   
        System.out.println("Received message from normalQueue: " + message);
    }
}

五、定义私信队列(Fanout Exchange)

1. 场景说明

假设有一个消息发布系统,需要将同一条消息广播给多个不同的接收方,例如新闻发布系统将一条新闻消息同时发送给多个订阅者,这种情况下就可以使用 Fanout Exchange

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kale又菜又爱玩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值