RabbitMQ的基本了解

本文详细介绍了如何在Docker中安装RabbitMQ,包括镜像下载、配置管理界面,并展示了如何在SpringBoot应用中使用RabbitMQ的生产者、消费者和消息路由。一步步教你实现消息队列的搭建与应用。
摘要由CSDN通过智能技术生成

目录

一. 概念

二. 四大核心概念

三.docker安装rabbitmq

四. springboot使用RabbitMQ


一. 概念

RabbitMQ 是一个消息中间件:它是一个面向消息中间件的开放式标准应用层协议(它不处理消息而是接收,存储和转发消息数据)

二. 四大核心概念

1.生产者
产生数据发送消息的程序是生产者

2.交换机
交换机在接收来自生产者的消息,要将消息推送到队列中。而且这个交换机必须确切知道如何处理它接收到的消息,是将这些消息推送到特定队列还是推送到多个队列,亦或者是把消息丢弃

3.队列
Queue:队列,是 Rabbitmq的内部对象,是将消息以推送或者拉取方式给消费者进行消费

4.消费者
消费者,表示一个从消息队列中取得消息的客户端应用程序。

      创建消息             路由键              pull/push
   生产者------------>交换机------------>队列------------>消费者

三.docker安装rabbitmq

3.1 下载镜像

docker pull rabbitmq:management

3.2 运行镜像

设置用户名和密码

docker run -d \
     --name my-rabbitmq \
     -p 5672:5672 -p 15672:15672 \
     -v /data/rabbitmq:/var/lib/rabbitmq \
     --hostname my-rabbitmq-host \
     -e RABBITMQ_DEFAULT_VHOST=my_vhost \
     -e RABBITMQ_DEFAULT_USER=admin \
     -e RABBITMQ_DEFAULT_PASS=admin \
     --restart=always \
     rabbitmq:management

参数说明:
   -d:后台运行容器
   -name:指定容器名
   -p:指定服务运行的端口(5672:应用访问端口;15672:控制台Web端口号)
   -v:映射目录或文件,启动了一个数据卷容器,数据卷路径为:/var/lib/rabbitmq,再将此数据卷映射到住宿主机的/data目录
   --hostname:主机名(RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名)
   -e:指定环境变量;(RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码)
   --restart=always:当Docker重启时,容器能自动启动   
   rabbitmq:management:镜像名

开启端口号

 firewall-cmd --zone=public --add-port=5671/tcp --permanent

 firewall-cmd --zone=public --add-port=15671/tcp --permanent

#重启防火墙(不重启以上的设置是不会生效的):
firewall-cmd --reload

3.3 查看是否可以进入

http://[虚拟机ip]/15672

四. springboot使用RabbitMQ

4.1 给pom.xml添加到rabbitmq依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

4.2 application.yml的连接配置

server:
  port: 8001
spring:
  rabbitmq:
    host: 192.168.88.140
    port: 5672
    username: springboot
    password: 123456
    ## 使用在docker安装rabbitmq时的虚拟机名字
    virtual-host: my_vhost

4.3 创建直连交互机

@Configuration //可以把该类变成配置类
public class DirectExchangeConfig {

    //1.创建队列
    @Bean
    public Queue directQueue(){
        return new Queue("directQueue");
    }

    @Bean
    public Queue directQueue1(){
        return new Queue("directQueue1");
    }

    //2.创建交换机
    @Bean
    public DirectExchange directExchange(){
        return new DirectExchange("directExchange");
    }

    //3.将队列通过路由键绑定到交换机中
    @Bean
    public Binding directBinding(){
        return BindingBuilder.bind(directQueue()).to(directExchange()).with("directRouting");
    }
    @Bean
    public Binding directBinding1(){
        return BindingBuilder.bind(directQueue1()).to(directExchange()).with("directRouting1");
    }

4.4 创建一个类,可以让生产者发送方法

@RestController
public class SendController {

    //获取rabbitmq的消息发送模块
    @Autowired
    private RabbitTemplate rabbitTemplate;

    @RequestMapping("/sendDirect")
    public String sendDirectMessga(String msg){
        rabbitTemplate.convertAndSend("directExchange","directRouting",msg);
        rabbitTemplate.convertAndSend("directExchange","directRouting1",msg);
        return msg+",消息发送成功";
    }

}

通过指定路由键directRouting发送给交换机directExchange

交互机directExchange通过指定的路由键把消息msg投递到对应的队列上面去

4.5 启动生产者,就可以看见发送了两个消息过去

4.6 创建消费者,并启动

@Component
@RabbitListener(queues = {"directQueue","directQueue1"})
public class DirectRecevier {

    @RabbitHandler
    public void handleDirectMsg(String ss){
        System.out.println(ss);
    }

}

4.7 消息就消费掉了

@RabbitListener:表示把该类变成配置类

@RabbitHandler注解:指定对消息的处理

@Bean:把方法放到spring上下文里面去

@RabbitListener(queues = {"directQueue","directQueue1"}):这样就可以一次消费两条消息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RabbitMQ是一个消息代理。它通过发送消息和接收消息来实现消息传递的功能。在介绍RabbitMQ的基础之前,我们需要了解一些常用的管理工具,如rabbitmqctl和rabbitmq-plugins,它们用于管理RabbitMQ服务器。 在开始使用RabbitMQ之前,我们可以通过一个简单的"helloworld"例子来了解它的基本使用方法。我们可以发送一个消息"helloworld"并接收它。同时,这个例子还会涉及到RabbitMQ基本概念,例如交换机和队列。 这些是RabbitMQ基本介绍,它是一个功能强大的消息代理系统,用于实现消息传递。在后续的文章中,我们将会更深入地了解RabbitMQ,并进行性能测试。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [RabbitMQ基础概念详细介绍](https://blog.csdn.net/qq_40704861/article/details/123067104)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [RabbitMQ基本概念和使用](https://download.csdn.net/download/weixin_38678022/14962733)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值