RabbitMQ

RabbitMQ

何为RabbitMq?

RabbitMQ是一个实现了AMQP(Advanced Message Queuing Protocol)高级消息队列协议的消息队列服务,用Erlang语言。

RabbitMq原理在这里插入图片描述

  1. Provider:消息的生产者
  2. Exchange:消息交换机
  3. Binding:绑定,将交换机与队列进行绑定
  4. Queue:即队列,用于存储消息
  5. Consumer:消息的消费者,如果有多个消费者同时订阅同一个Queue中的消息,Queue中的消息会被平摊给多个消费者

简单来说,就是交换机与相应队列进行绑定,生产者生产消息并发送到对应的交换机中,再由交换机将消息转到到队列中,消费者在从订阅的队列中获取消息进行消费。

交换机类型

Direct Exchange

直连型交换机,根据消息携带的路由键将消息投递给对应队列。

大致流程,有一个队列绑定到一个直连交换机上,同时赋予一个路由键 routing key 。
然后当一个消息携带着路由值为X(路由值需要完全匹配),这个消息通过生产者发送给交换机时,交换机就会根据这个路由值X去寻找绑定值也是X的队列。

Fanout Exchange

扇型交换机,这个交换机没有路由键概念,就算你绑了路由键也是无视的。 这个交换机在接收到消息后,会直接转发到绑定到它上面的所有队列。(消息转发速度较快一些)

Topic Exchange

主题交换机,这个交换机其实跟直连交换机流程差不多,但是它的特点就是在它的路由键和绑定键之间是有规则的。(类似正则表达式,不需要完全匹配)

安装RabbitMq

Rabbit 安装需要搭建Erlang环境,采用docker安装较为简单

#拉取镜像
docker pull  rabbitmq:3-management
#运行镜像  远程连接时阿里云服务器需要配置相应的安全组
docker run -d  --name rabbit -p 15672:15672 -p 5672:5672  rabbitmq:3-management
#进入容器内部
docker exec -it  849d3cbe9e0d  bash
#添加用户rabbitmqctl add_user 账号 密码
rabbitmqctl add_user root root
#设置角色rabbitmqctl set_user_tags 账号 角色
rabbitmqctl set_user_tags root administrator
#赋予权限 使用户root具有默认(/)这个virtual host中所有资源的配置、写、读权限以便管理其中的资源
rabbitmqctl set_permissions -p / root ".*" ".*" ".*"

SpringBoot整合RabbitMq

导入maven依赖

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

application.yml

server:
  port: 8080
spring:
  #给项目来个名字
  application:
    name: rabbitmq-provider
  #配置rabbitMq 服务器
  rabbitmq:
    host: *.*.*.*
    port: 5672
    username: root
    password: root

以Direct Exchange为例

rabbitmq配置类


@Configuration
public class DirectRabbitConfig{
   

    //队列 起名:TestDirectQueue
    @Bean
    public Queue TestDirectQueue() {
   
        return new Queue("TestDirectQueue",true);  //true 是否持久 会持久化到磁盘中 rabbitmq重启后消息会依然存在  但会影响性能。改为false时需先确定队列中没有之前设为true产生的消息,否则会报错
    }

    //Direct交换机 起名:TestDirectExchange
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值