ubuntu 20.04.4 安装rabbitmq最新版详细教程(附上远程调用配置)

134 阅读4分钟

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

  1. 安装所需软件包

sudo apt-get install wget apt-transport-https -y

  1. 添加密钥,整个一起复制

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

  1. 添加 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

  1. 添加rabbitmq的仓库

curl -1sLf "https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/io.packagecloud.rabbitmq.gpg > /dev/null

  1. 添加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
  1. 更新包索引,加上-y可以默认同意一些询问

sudo apt-get update -y

  1. 安装Erlangrabbitmq开发语言,相当于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查看,成功就是如下界面

image.png

  1. 安装rabbitmq-server及其依赖项

sudo apt-get install rabbitmq-server -y --fix-missing

  1. 安装apt HTTPS传输

sudo apt-get install apt-transport-https

二、查看rabbitmq服务是否安装成功

安装完毕,输入以下命令查看

sudo systemctl status rabbitmq-server

启动成功截图

image.png

三、启用RabbitMQ管理插件

  1. 首先安装管理插件rabbitmq_management

sudo rabbitmq-plugins enable rabbitmq_management

image.png

  1. 默认用户guest(密码:guest)只能通过localhost登录,远程访问需要创建管理员帐户
# 例如,添加用户名:admin,密码:admin的账户
sudo rabbitmqctl add_user admin admin

# 将用户添加到管理员用户组
sudo rabbitmqctl set_user_tags admin administrator
  1. 启用web管理门户的插件后,即可通过浏览器访问,访问 http://你自己服务器的IP:15672 , 输入你自己刚刚创建的账户用户名和密码点击登录。

注意:让防火墙放开端口15672和5672,15672是web管理插件的访问端口,5672是rabbitmq服务端口

image.png

image.png

四、设置管理员用户的远程访问权限

  1. 首先登录前面添加的管理员用户,添加的admin用户默认没有权限,点击Admin进入账户管理界面

image.png

  1. 点击admin1,因为我已经配置好我的admin账号的权限了

image.png

  1. 点击set pression

image.png

  1. 再次点击Admin,查看账户权限

image.png

  1. 显示如下界面就是权限设置没有问题了

image.png

五、附上一些对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的简单消息应用

  1. pom.xml添加配置
<!--spring amqp 依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
  1. 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
  1. 新建rabbitmq的config文件,添加一个queue的队列
@Configuration
public class RabbitMQConfig {

    @Bean
    public Queue queue(){
        return new Queue("queue",true);
    }
}
  1. 新建service文件,消息发送者
/**
 * 消息发送者
 */
@Service
@Slf4j
public class MQSender {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    /**
     * 发送秒杀消息
     * @param message 秒杀消息
     */
    public void sendSecKillMessage(Object message){
        log.info("发送消息:"+message);
        rabbitTemplate.convertAndSend("queue",message);
    }

}
  1. 新建service文件,消息接收者
@Service
@Slf4j
public class MQReceiver {
    @RabbitListener(queues = "queue")
    public void receive(Object message){
        log.info("接收到消息:"+message);
    }
}
  1. 新建一个接口,用来调用消息发送者服务
@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");
    }

}
  1. 测试结果如下

访问测试接口

image.png

消息结果

image.png

总结

到了这里已经基本了解rabbitmq服务是干什么的,以及如何部署到自己的服务器上了!感谢大家耐心查阅完本期博客。

有什么问题可以评论区留言,我会不定期回答大家的问题!!!