RabbitMQ - SpringBoot集成版 - 开发+运维

RabbitMQ - SpringBoot集成版

文章目录
《RabbitMQ实战指南》—— 朱忠华 著

一、首次安装

普通部署

下载地址 - Release RabbitMQ 3.6.14 · rabbitmq/rabbitmq-server

# 安装erlang
yum -y update
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
yum -y install epel-release
yum -y install socat
yum -y install erlang
# 检查erl版本
erl -version
# 安装RabbitMQ - 先去官网下载RPM包 rabbitmq-server-3.6.14-1.el6.noarch.rpm
yum install -y net-tools
# rpm -Uvh rabbitmq-server-3.10.7-1.el8.noarch.rpm
rpm -Uvh rabbitmq-server-3.6.14-1.el6.noarch.rpm
# 启动MQ并关闭防火墙
systemctl start rabbitmq-server
systemctl status rabbitmq-server
iptables -F
# Rabbit的默认通讯端口是5672
# 安装Web控制台
rabbitmq-plugins enable rabbitmq_management
# 设置初始用户并设置为管理员
rabbitmqctl add_user admin admin
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin “.*” “.*” “.*”
# 访问Web控制台
http://192.168.247.184:15672

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vnyg86g3-1663406974053)(https://csdn-pic-1301850093.cos.ap-guangzhou.myqcloud.com/csdn-pic/rabbitmq-初始界面=1.png)]

Docker部署

两步完事

docker pull rabbitmq:management
docker run -dit --name myrabbitmq-demo01 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 rabbitmq:management

Windows部署

下载地址
https://www.erlang.org/patches/otp-25.0.4
Releases · rabbitmq/rabbitmq-server (github.com)
RabbitMQ Erlang Version Requirements — RabbitMQ

注意版本的对应关系,以及安装路径下不要有中文和空格。

.\sbin\rabbitmq-plugins enable rabbitmq_management

上面的命令执行成功之后,我们就可以通过http://localhost:15672来访问web端的管理界面

**输入用户名:guest,密码:guest(默认)**就可以进入管理界面

二、入门

使用之前,先了解消息队列能解决什么问题

[1]异步处理

[2]解耦服务

[3]流量削峰

上面的三点是我们使用消息中间件最主要的目的

2.1 概念点1:QPS/PV/UV/PR

什么是QPS,PV , UV , PR

  • QPS:每秒查询率,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准
  • PV:页面浏览量
  • UV:访问某个站点或点击某条新闻的不同IP地址的人数
  • PR:即PageRank,网页的级别技术,用来标识网页的等级/重要性。级别从1到10级,10级为满分。PR值越高说明该网页越受欢迎(越重要)

2.2 概念点2:AMQP/JMS

MQ是消息通信的模型;实现MQ的大致有两种主流方式:AMQP、JMS

  • AMQP,Advanced Message Queuing Protocol
    1. 应用层队列协议
    2. 消息中间件与客户端之间的消息传递,不受产品、语言的限制
    3. 代表作:RabbitMQ
  • JMS,Java Message Service
    1. Java的消息服务应用程序接口
    2. 受语言限制,只能是JAVA与JAVA之间的通信
    3. 代表作:ActiveMQ
  • AMQP 与 JMS 区别
    • JMS是定义了统一的接口,来对消息操作进行统一;AMQP是通过规定协议来统一数据交互的格式
    • JMS限定了必须使用Java语言;AMQP只是协议,不规定实现方式,因此是跨语言的。
    • JMS规定了两种消息模式;而AMQP的消息模式更加丰富

2.3 初始实例工程

部署生产者及消费者

依赖引入

<parent>
        <artifactId>spring-boot-starter-parent</artifactId>
        <groupId>org.springframework.boot</groupId>
        <version>2.3.4.RELEASE</version>
    </parent>

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.20</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <version>2.3.4.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>2.3.4.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-test</artifactId>
                <version>2.3.4.RELEASE</version>
            </dependency>
            <!-- 集成了boot后 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-amqp</artifactId>
                <version>2.3.4.RELEASE</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

由于是简单案例,生产者和消费者的配置文件都是相同的

server:
  port: 19091
spring:
  rabbitmq:
    host: 192.168.247.184
    port: 5672
    username: admin
    password: admin
    virtual-host: /

接下来是生产者,三个动作

  1. 启动类
  2. MQ配置类,主要是做交换机和队列的创建、参数设置、交换机与队列的绑定
  3. 一个控制层的方法,使用RabbitTemplate,指定交换机的名称、路由键及消息,然后往MQ进行推送

启动类

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

RabbitMQConfig.java

import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RabbitMQConfig {
   

    /**
     * 配置交换机/队列的名字
     */
    public static final String EXCHANGE_NAME = "Demo01_direct_exchange";
    public static final String QUEUE_NAME = "Demo01_queue";

    /**
     * Exchange 交换机
     * 路由模式
     *
     * @return
     */
    @Bean("bootExchange")
    public Exchange bootExchange() {
   
        return ExchangeBuilder.directExchange(EXCHANGE_NAME).durable(true).build();
    }

    /**
     * Queue 队列
     * 持久化类型的队列
     * 我查看源码,它就两种类型,持久化/非持久化
     *
     * @return
     */
    @Bean("bootQueue")
    public Queue bootQueue() {
   
        return QueueBuilder.durable(QUEUE_NAME).build();
    }

    /**
     * 交换机与队列的绑定关系
     * noargs():表示不指定参数
     *
     * @param queue
     * @param exchange
     * @return
     */
    @Bean
    public Binding bindQueueExchange(@Qualifier("bootQueue") Queue queue,
                                     @Qualifier("bootExchange") Exchange exchange) {
   
        return BindingBuilder
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot集成RabbitMQ可以通过以下步骤完成: 1. 添加Maven依赖:在pom.xml文件中添加RabbitMQ的Spring Boot Starter依赖。 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> ``` 2. 配置RabbitMQ连接信息:在application.properties(或application.yml)文件中配置RabbitMQ的连接信息。 ```properties spring.rabbitmq.host=your_rabbitmq_host spring.rabbitmq.port=your_rabbitmq_port spring.rabbitmq.username=your_rabbitmq_username spring.rabbitmq.password=your_rabbitmq_password ``` 3. 创建RabbitMQ发送者:创建一个发送消息的类,使用`RabbitTemplate`发送消息到指定的交换机和队列。 ```java import org.springframework.amqp.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class RabbitMQSender { @Autowired private RabbitTemplate rabbitTemplate; public void sendMessage(String exchange, String routingKey, Object message) { rabbitTemplate.convertAndSend(exchange, routingKey, message); } } ``` 4. 创建RabbitMQ接收者:创建一个接收消息的类,使用`@RabbitListener`注解监听指定的队列,处理接收到的消息。 ```java import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; @Component public class RabbitMQReceiver { @RabbitListener(queues = "your_queue_name") public void receiveMessage(Object message) { // 处理接收到的消息 System.out.println("Received message: " + message.toString()); } } ``` 5. 发送和接收消息:在需要发送或接收消息的地方调用对应的方法。 ```java @Autowired private RabbitMQSender rabbitMQSender; public void sendMessage() { rabbitMQSender.sendMessage("your_exchange_name", "your_routing_key", "Hello, RabbitMQ!"); } ``` 以上是基本的使用方式,你可以根据实际需求进行扩展和配置。注意,你还需要安装并启动RabbitMQ服务。 希望对你有所帮助!如果有任何疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值