RabbitMq安装配置以及SpringBoot集成应用

目录

一、下载安装erlang

二、下载安装RabbitMQ

三、设置rabbitMq远程IP访问权限

四、创建虚拟主机、配置用户到主机

五、创建配置交换机、队列

六、SpringBoot集成RabbitMQ


一、下载安装erlang

安装Rabbit MQ的前提是安装Erlang,原因RabbitMQ服务端代码是使用并发式语言Erlang编写。

Erlang官方下载地址:https://www.erlang.org/downloads

百度网盘:链接:https://pan.baidu.com/s/1KF1qFm1UqOU599IOr5NKnA?pwd=5wn4 
          提取码:5wn4 
          版本:otp_win64_23.3

傻瓜式安装 一直下一步,安装完成后开始配置环境变量

 %ERLANG_HOME%\bin

 以管理员身份打开cmd,输入erl

 看到如上信息,则安装成功。

二、下载安装RabbitMQ

RabbitMQ官方 下载地址:https://www.rabbitmq.com/download.html

百度网盘:链接:https://pan.baidu.com/s/1reofB1Kt549UCcDMZ_qm1Q?pwd=n2xw 
          提取码:n2xw 
          版本:rabbitmq-server-3.8.16    

 傻瓜式安装 一直下一步,安装完成

找到RabbitMq安装目录,如:
C:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.14\sbin

以管理员身份打开cmd
cd C:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.14\sbin
输入rabbitmq-plugins enable rabbitmq_management
 

 安装完后,输入 rabbitmqctl status

看到上述信息,则表示安装成功,接下来启动服务,如下图: 

 在浏览器地址打开:http://localhost:15672/#/

输入默认账号guest 密码guest 点击【login】,如下图: 

 最后RabbitMq安装成功。

三、设置rabbitMq远程IP访问权限

用原始的guest用户只能登录localhost,在外部访问不了,所以我们要添加一个用户,供外部登录使用:

1、添加一个用户,我这里以设置的用户名是ant,大家可以按需设置

     rabbitmqctl add_user ant 123456

2、设置ant的角色信息,这里设置为超级管理员管理角色(可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作)

     rabbitmqctl set_user_tags ant administrator

3、设置用户权限

     rabbitmqctl set_permissions -p “/” ant “." ".” “.*”

设置上面3步,就可以从外部访问登录了!

四、创建虚拟主机、配置用户到主机

        虚拟主机可以理解为RabbitMQ中的重大特点,实际上在之前就已经存在虚拟主了。
RāobitMQ如果没有配置,则默认会存在一个虚拟主机,当然用户也可以建立自己的虚
拟主机,并目每一个虚拟主机中有自己的队列信息。

1、创建新用户(上一步通过命令创建了用户,可以忽略次步)

2、创建虚拟主机

 在正常安装RabbitMQ之后, 系统会默认创建一个虚拟主机 名称以 / 的形式

 点击Virtual Hosts 添加一个名为test的虚拟主机

 添加成功后点击test这里我们为虚拟主机添加用户

点击权限后, 选择User的下拉中就能看到我们的刚添加的用户heng

  点击Set permission 设置权限后就能在上方权限列表中看见我们刚添加的用户

回到虚拟主机的页面后, 我们发现会多出一条记录

到这里我们为虚拟主机添加用户的工作就完成啦~ 

五、创建配置交换机、队列

1、创建交换机

创建交换机的时候需要指定虚拟主机以及交换机的类型(direct(路由模式)、fanout(广播)、headers、topic)
direct:Exchange通过消息携带的路由键来将消息分发到对应的队列中
fanout:Exchange将消息分发到所有绑定到交换机的队列中
headers:Exchange通过判断消息头的值是否与绑定的值相匹配来分发消息
x-match为any时,消息头的任意一个值匹配就可以满足条件
x-match为all时,消息头的所有值匹配才能满足条件
topic:Exchange将满足路由规则的消息分发到对应的队列

2、创建队列

创建队列时往往需要绑定到交换机上。

3、 绑定交换机

点击Exchanges标签
(1)输入需要绑定的交换机名称查询
(2)点击交换机名称进入详情页操作

 配置完成

六、SpringBoot集成RabbitMQ

1、导入依赖

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

2、配置.yml文件

#配置rabbitMq 服务器 
#spring:下一级
rabbitmq:
  host: 121.36.131.133
  port: 5672
  username: admin
  password: admin
  virtual-host: pie-fpt
  # 关闭消费者
  listener:
    simple:
      auto-startup: false
  #是否关闭所以定时任务 false 关闭 true 开启

3、创建消费者

package com.piefpt.module.rabbitmq.consumer;

import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.*;
import org.springframework.stereotype.Component;

@Component
@Slf4j
public class VideoConsumer {

    //配置需要监听的队列(返回结果)
    @RabbitListener(
            bindings = @QueueBinding(
                    value = @Queue(value = "early_video_streaming_pull_queue",durable = "true"),
                    exchange = @Exchange(name = "early_video_streaming_pull_exchange", durable = "true",
                    type = "classic",
                    ignoreDeclarationExceptions = "true"),//保证出现异常不影响交换机运行
                    key = "early_video_streaming_pull_routing")
    )

    @RabbitHandler
    public void getMsg(byte[] msg) {
        try {
           //业务处理


        } catch (Exception e) {
            e.printStackTrace();
            log.info("消息失败:" + msg);
        }
    }

}

4、创建生产者

package com.piefpt.module.rabbitmq.producer;

import cn.hutool.json.JSONUtil;
import com.jgdf.core.web.R;
import com.piefpt.module.rabbitmq.entity.VideoStreaming;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.core.MessageProperties;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.nio.charset.StandardCharsets;

@Slf4j
@Api(tags = "算法视频流推送", value = "算法视频流推送")
@RestController
@RequestMapping(value = "/VideoProducer")
public class VideoProducer {

    @Resource
    private RabbitTemplate rabbitTemplate;

    @PostMapping("/addVideoProducerMsg")
    @ApiOperation(value = "发送视频流算法请求")
    public R addStopWarning(@RequestBody VideoStreaming videoStreaming) {
        MessageProperties properties = new MessageProperties();
        properties.setContentType(MessageProperties.CONTENT_TYPE_JSON);
        rabbitTemplate.convertAndSend("early_video_streaming_push_queue",
                MessageBuilder.withBody(JSONUtil.toJsonStr(videoStreaming)
                        .getBytes(StandardCharsets.UTF_8))
                        .andProperties(properties)
                        .build()
        );
        return R.ok("成功");
    }

}

如果帮助到了你,还请点赞支持

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值