ubuntu 20.04.4安装rabbitmq最新版详细教程
我的安装环境
- Ubuntu 20.04.4 LTS (Focal Fossa) x86_64(Py3.7.9)
- RabbitMQ 3.12.4
- Erlang 25.3.2.2
一、安装 RabbitMQ Server
- 安装所需软件包
sudo apt-get install wget apt-transport-https -y
- 添加密钥,整个一起复制
curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null
- 添加 Erlang的Launchpad PPA
curl -1sLf "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xf77f1eda57ebb1cc" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/net.launchpad.ppa.rabbitmq.erlang.gpg > /dev/null
- 添加rabbitmq的仓库
curl -1sLf "https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/io.packagecloud.rabbitmq.gpg > /dev/null
- 添加RabbitMQ团队维护的apt库,整个一起复制,EOF包含的是对list文件的配置
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Provides modern Erlang/OTP releases
##
## "bionic" as distribution name should work for any reasonably recent Ubuntu or Debian release.
## See the release to distribution mapping table in RabbitMQ doc guides to learn more.
deb [signed-by=/usr/share/keyrings/net.launchpad.ppa.rabbitmq.erlang.gpg] http://ppa.launchpad.net/rabbitmq/rabbitmq-erlang/ubuntu bionic main
deb-src [signed-by=/usr/share/keyrings/net.launchpad.ppa.rabbitmq.erlang.gpg] http://ppa.launchpad.net/rabbitmq/rabbitmq-erlang/ubuntu bionic main
## Provides RabbitMQ
##
## "bionic" as distribution name should work for any reasonably recent Ubuntu or Debian release.
## See the release to distribution mapping table in RabbitMQ doc guides to learn more.
deb [signed-by=/usr/share/keyrings/io.packagecloud.rabbitmq.gpg] https://packagecloud.io/rabbitmq/rabbitmq-server/ubuntu/ bionic main
deb-src [signed-by=/usr/share/keyrings/io.packagecloud.rabbitmq.gpg] https://packagecloud.io/rabbitmq/rabbitmq-server/ubuntu/ bionic main
EOF
- 更新包索引,加上-y可以默认同意一些询问
sudo apt-get update -y
- 安装Erlang,rabbitmq开发语言,相当于java项目需要jdk环境一样
sudo apt-get install -y erlang-base \erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \erlang-runtime-tools erlang-snmp erlang-ssl \erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl
检验Erlang语言是否安装成功可以这样输入erl查看,成功就是如下界面
- 安装rabbitmq-server及其依赖项
sudo apt-get install rabbitmq-server -y --fix-missing
- 安装apt HTTPS传输
sudo apt-get install apt-transport-https
二、查看rabbitmq服务是否安装成功
安装完毕,输入以下命令查看
sudo systemctl status rabbitmq-server
启动成功截图
三、启用RabbitMQ管理插件
- 首先安装管理插件rabbitmq_management
sudo rabbitmq-plugins enable rabbitmq_management
- 默认用户guest(密码:guest)只能通过localhost登录,远程访问需要创建管理员帐户
# 例如,添加用户名:admin,密码:admin的账户
sudo rabbitmqctl add_user admin admin
# 将用户添加到管理员用户组
sudo rabbitmqctl set_user_tags admin administrator
- 启用web管理门户的插件后,即可通过浏览器访问,访问 http://你自己服务器的IP:15672 , 输入你自己刚刚创建的账户用户名和密码点击登录。
注意:让防火墙放开端口15672和5672,15672是web管理插件的访问端口,5672是rabbitmq服务端口
四、设置管理员用户的远程访问权限
- 首先登录前面添加的管理员用户,添加的admin用户默认没有权限,点击Admin进入账户管理界面
- 点击admin1,因为我已经配置好我的admin账号的权限了
- 点击set pression
- 再次点击Admin,查看账户权限
- 显示如下界面就是权限设置没有问题了
五、附上一些对rabbitmq 服务的简单操作命令
点击这里进入官网,学习更多rabbitmq相关知识。
# 关闭命令
sudo systemctl stop rabbitmq-server.service
# 启动命令
sudo systemctl start rabbitmq-server.service
# 重启命令
sudo systemctl restart rabbitmq-server.service
# 查看服务状态
sudo systemctl status rabbitmq-server
六、springboot集成rabbitmq的简单消息应用
- pom.xml添加配置
<!--spring amqp 依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
- application.yml 添加配置
rabbitmq:
# 服务器
host: 你的服务器IP
# 用户名
username: admin
# 密码
password: 你创建的账户密码
# 虚拟主机
virtual-host: /
# 端口
port: 5672
listener:
simple:
# 消费者最小数量
concurrency: 10
# 消费者最大数量
max-concurrency: 10
# 一次最大消费数量
prefetch: 1
# 启动时默认启动容器
auto-startup: true
# 被拒绝时重新入队,默认false
default-requeue-rejected: true
template:
retry:
# 发布重试,默认false
enabled: true
# 重试时间,默认1000ms
initial-interval: 1000ms
# 重试次数,默认3次
max-attempts: 3
# 重试时间间隔,默认1000ms
max-interval: 1000ms
# 重试间隔倍数,默认1.5 比如配2.0,第一次重试间隔为1000ms,第二次重试间隔为2000ms,第三次重试间隔为4000ms
multiplier: 1
- 新建rabbitmq的config文件,添加一个queue的队列
@Configuration
public class RabbitMQConfig {
@Bean
public Queue queue(){
return new Queue("queue",true);
}
}
- 新建service文件,消息发送者
/**
* 消息发送者
*/
@Service
@Slf4j
public class MQSender {
@Autowired
private RabbitTemplate rabbitTemplate;
/**
* 发送秒杀消息
* @param message 秒杀消息
*/
public void sendSecKillMessage(Object message){
log.info("发送消息:"+message);
rabbitTemplate.convertAndSend("queue",message);
}
}
- 新建service文件,消息接收者
@Service
@Slf4j
public class MQReceiver {
@RabbitListener(queues = "queue")
public void receive(Object message){
log.info("接收到消息:"+message);
}
}
- 新建一个接口,用来调用消息发送者服务
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private MQSender mqSender;
// 用户信息测试
@RequestMapping("/info")
@ResponseBody
public RespBean info(User user){
return RespBean.success(user);
}
// 测试MQ
@RequestMapping("/mq")
@ResponseBody
public void mq(){
mqSender.sendSecKillMessage("hello world");
}
}
- 测试结果如下
访问测试接口
消息结果
总结
到了这里已经基本了解rabbitmq服务是干什么的,以及如何部署到自己的服务器上了!感谢大家耐心查阅完本期博客。
有什么问题可以评论区留言,我会不定期回答大家的问题!!!