当前位置:   article > 正文

RabbitMQ的基本使用&入门

RabbitMQ的基本使用&入门

前言

RabbitMQ是一个开源的消息代理软件,用于处理应用程序之间的消息传递。它实现了高级消息队列协议(AMQP),是一个可靠且灵活的消息中间件,广泛用于构建分布式系统、微服务架构以及异构系统之间的通信 ,本期文章将为大家带来RabbitMQ的基本使用及入门

 一.RabbitMQ基本介绍

RabbitMQ可以实现可靠的异步通信,解耦系统中的组件,以及处理高并发和大规模的消息流。它在许多领域,如微服务架构、日志处理、任务调度等方面都有广泛的应用

消息队列(Message Queue): RabbitMQ作为消息中间件,它允许应用程序之间通过消息进行通信。消息被发送到队列中,然后由消费者从队列中接收并处理。

生产者(Producer): 生产者是将消息发送到RabbitMQ的应用程序。它将消息发布到一个或多个队列。

消费者(Consumer): 消费者是从RabbitMQ接收消息并进行处理的应用程序。一个队列可以有多个消费者,但每条消息只会被一个消费者处理。

交换机(Exchange): 交换机负责将消息路由到一个或多个队列。生产者将消息发送到交换机,而交换机则将消息路由到相关的队列。

队列(Queue): 队列是存储消息的地方,它是消息的终点。消费者从队列中获取消息并进行处理。

绑定(Binding): 绑定是交换机和队列之间的关系,它定义了如何将消息从交换机路由到队列。

  1. 持久性(Durable): RabbitMQ支持将队列和消息标记为持久性,以确保在服务器重启时数据不会丢失。

  2. 虚拟主机(Virtual Host): 虚拟主机是RabbitMQ中消息隔离的单位,允许在同一RabbitMQ服务器上创建多个独立的消息代理。

  3. ACK(Acknowledgment): 消费者在处理完消息后发送ACK,通知RabbitMQ该消息已被成功处理。这确保消息不会在处理失败时丢失。

  4. 插件系统: RabbitMQ具有丰富的插件系统,允许扩展和定制其功能

1.常见消息队列

2.Docker安装部署RabbitMQ

1.拉取镜像

docker pull  rabbitmq:management

2.创建容器

命令详解:

在后台运行一个RabbitMQ容器,通过主机的5672端口可以访问RabbitMQ的AMQP服务,通过主机的15672端口可以访问RabbitMQ的管理界面。RabbitMQ的默认虚拟主机为"my_vhost",默认用户名和密码为"admin"。容器的主机名被设置为"my-rabbitmq-host"。容器将在守护进程启动时自动重新启动

在虚拟机中运行以下命令 

  1. docker run -d \
  2. --name my-rabbitmq \
  3. -p 5672:5672 -p 15672:15672 \
  4. --hostname my-rabbitmq-host \
  5. -e RABBITMQ_DEFAULT_VHOST=my_vhost \
  6. -e RABBITMQ_DEFAULT_USER=admin \
  7. -e RABBITMQ_DEFAULT_PASS=admin \
  8. --restart=always \
  9. rabbitmq:management

开放端口

  1. firewall-cmd --zone=public --add-port=15672/tcp --permanent
  2. firewall-cmd --zone=public --add-port=5672/tcp --permanent

容器创建运行完成后我们可以在自己的主机上通过IP:15672进入到管理员界面,账号密码为我们上面命令指定的admin,登录即可

3.添加用户

 添加用户输入账户名和密码指定当前用户身份

4.分配操作虚拟主机

刚创建完的用户还不能进行一个登录,需要给它分配一个能够操作的虚拟主机

 Virtal Host是可以分配的虚拟主机,Set permission可以对其进行分配

 分配完成后的用户就可以对当前虚拟主机进行登录等操作了

二.RabbitMQ实现简单队列

1.项目创建

我们以生产者和消费者的形式创建SpringBoot项目

 

创建时需要注意,以SpringBoot项目为例在勾选依赖时,要将Spring for Rabbit勾选

2.对生产者和消费者进行配置

生产者和消费者的配置文件都需要更改

注意:端口不能相同防止端口冲突,要将ip修改为自己的主机ip以及用户名和密码

  1. server:
  2. port: 8888
  3. spring:
  4. rabbitmq:
  5. host: Rabbit所在主机的ip
  6. username: YU
  7. password: 123456
  8. port: 5672
  9. virtual-host: my_vhost

3.创建RabbitMQ队列的Spring配置类

通过@Bean注解,它定义了一个名为firstQueue的Bean,该Bean是一个Queue实例,代表了一个名为"firstQueue"的RabbitMQ队列。这样的配置允许应用程序使用该队列进行消息的生产和消费

  1. package com.yu.publisher;
  2. import org.springframework.amqp.core.Queue;
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5. @Configuration
  6. @SuppressWarnings("all")
  7. public class RabbitConfig {
  8. @Bean
  9. public Queue firstQueue() {
  10. return new Queue("firstQueue");
  11. }
  12. }

4.创建控制层进行访问测试

1.生产者

我们通过导入Spring AMQP框架中用于发送消息的AmqpTemplate接口,调用amqpTemplateconvertAndSend方法向名为"firstQueue"的RabbitMQ队列发送消息,消息内容为"hello world",发送成功后返回一个字符串"

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/90415
推荐阅读
相关标签