目录
一、下载安装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("成功");
}
}
如果帮助到了你,还请点赞支持
本文详细介绍了如何下载安装Erlang和RabbitMQ,设置远程访问权限,创建虚拟主机和队列,以及在SpringBoot中集成RabbitMQ的步骤,包括生产者和消费者的示例。
612





