当前位置:   article > 正文

RabbitMQ(安装配置以及与SpringBoot整合)_启动mq

启动mq

文章目录

1.基本介绍

image-20240511093548128

2.Linux下安装配置RabbitMQ

1.安装erlang环境
1.将文件上传到/opt目录下

image-20240511094141520

2.进入/opt目录下,然后安装
cd /opt && rpm -ivh erlang-21.3-1.el7.x86_64.rpm
  • 1

image-20240511094607525

2.安装RabbitMQ
1.进入/opt目录,安装所需依赖
cd /opt && yum install socat -y
  • 1

image-20240511094818005

2.安装MQ
rpm -ivh rabbitmq-server-3.8.8-1.el7.noarch.rpm
  • 1

image-20240511094907481

3.基本配置
1.启动MQ
/sbin/service rabbitmq-server start
  • 1

image-20240511095035550

2.查看MQ状态
/sbin/service rabbitmq-server status
  • 1

image-20240511095131428

3.安装web管理插件
rabbitmq-plugins enable rabbitmq_management
  • 1

image-20240511095242435

4.安装web管理插件超时的解决方案
1.修改etc/hosts文件,修改主机名

image-20240511095330229

image-20240511095429376

2.重启MQ如果还报错就修改ip与本机ip相同

image-20240511095825597

5.设置开机自启
chkconfig rabbitmq-server on
  • 1

image-20240511100028069

6.关闭MQ
/sbin/service rabbitmq-server stop
  • 1

image-20240511100119207

7.组合指令
1.启动MQ并查看状态
/sbin/service rabbitmq-server start && /sbin/service rabbitmq-server status
  • 1

image-20240511100244007

2.关闭MQ并查看状态
/sbin/service rabbitmq-server stop && /sbin/service rabbitmq-server status
  • 1

image-20240511100349257

3.重启MQ并查看状态
/sbin/service rabbitmq-server stop && /sbin/service rabbitmq-server start && /sbin/service rabbitmq-server status
  • 1

image-20240511100501531

4.RabbitMQ管控台配置
1.开放15672端口
1.宝塔开启
systemctl start firewalld && firewall-cmd --permanent --add-port=15672/tcp && firewall-cmd --reload && firewall-cmd --query-port=15672/tcp
  • 1

image-20240511101456789

2.腾讯云开启,仅限本机登录

image-20240511101924825

2.访问 http://ip:15672 进行登录
1.使用guest用户登录,出现权限问题

image-20240511102159480

2.进入/etc/rabbitmq 编辑 rabbitmq.config
cd /etc/rabbitmq && vim rabbitmq.config
  • 1

image-20240511102448107

3.将下面这句话粘贴进去
[
{
	rabbit,
		[{
			loopback_users,[]
		}]
}
].
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

image-20240511102612261

4.重启MQ,使配置生效
/sbin/service rabbitmq-server stop && /sbin/service rabbitmq-server start && /sbin/service rabbitmq-server status
  • 1
5.再次登录,成功!

image-20240511102721570

3.控制台参数解析
1.端口

image-20240511102910962

2.交换机,默认七个

image-20240511102958591

4.用户管理
1.进入Admin

image-20240511103240680

2.添加用户test,默认不能访问虚拟主机

image-20240511103411192

image-20240511103438155

3.给test用户分配可以访问的虚拟主机

image-20240511103552470

image-20240511103630246

image-20240511103642661

4.为了安全,修改guest用户的密码

image-20240511104138104

5.增加虚拟主机
1.添加/test的虚拟主机

image-20240511103749131

2.配置test用户可以访问虚拟主机/test

image-20240511103850074

image-20240511103857649

3.删除test用户

image-20240511104414406

5.SpringBoot集成MQ

1.需求分析

image-20240511104725661

2.环境配置
1.引入依赖
        <!--rabbitmq-需要的 AMQP 依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
2.MQ的端口配置
1.编辑MQ的配置文件
cd /etc/rabbitmq && vim rabbitmq.config
  • 1
2.修改端口5672为6783(防止被攻击)
[
    {rabbit, [
        {tcp_listeners, [{"0.0.0.0", 6783}]},
        {loopback_users, []}
    ]}
].

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
3.重启MQ使其生效
/sbin/service rabbitmq-server stop && /sbin/service rabbitmq-server start && /sbin/service rabbitmq-server status
  • 1
4.测试是否成功
netstat -plnt | grep 6783
  • 1

image-20240511142336772

5.宝塔开启6783端口
systemctl start firewalld && firewall-cmd --permanent --add-port=6783/tcp && firewall-cmd --reload && firewall-cmd --query-port=6783/tcp
  • 1

image-20240511135713648

6.腾讯云开启

image-20240511135640831

3.配置application.yml
  # RabbitMQ 配置
  rabbitmq:
    # 服务器地址
    host: 
    # 用户名
    username: 
    # 密码
    password: ******
    # 虚拟主机
    virtual-host: /
    # 端口
    port: 6783
    # 消息监听器配置
    listener:
      simple:
        #消费者最小数量
        concurrency: 10
        #消费者最大数量
        max-concurrency: 10
        #限制消费者,每次只能处理一条消息,处理完才能继续下一条消息
        prefetch: 1
        #启动时是否默认启动容器,默认为 true
        auto-startup: true
        #被拒绝时重新进入队列的
        default-requeue-rejected: true
    # 消息重试配置
    template:
      retry:
        #启用消息重试机制,默认为 false
        enabled: true
        #初始重试间隔时间
        initial-interval: 1000ms
        #重试最大次数,默认为 3 次
        max-attempts: 3
        #重试最大时间间隔,默认 10000ms
        max-interval: 10000ms
        #重试的间隔乘数
        #配置 2 的话,第一次等 1s,第二次等 2s,第三次等 4s
        multiplier: 1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
4.RabbitMQ配置类创建队列 RabbitMQConfig.java
package com.sxs.seckill.config;

import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Description:
 *
 * @Author sun
 * @Create 2024/5/11 13:58
 * @Version 1.0
 */
@Configuration
public class RabbitMQConfig {
    private static final String QUEUE = "queue";
    /**
     * 1. 配置队列
     * 2. 队列名为 queue
     * 3. true 表示: 持久化
     * durable: 队列是否持久化。 队列默认是存放到内存中的,rabbitmq 重启则丢失,
     * 若想重启之后还存在则队列要持久化,
     * 保存到 Erlang 自带的 Mnesia 数据库中,当 rabbitmq 重启之后会读取该数据库
     */
    @Bean
    public Queue queue() {
        return new Queue(QUEUE, true);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
3.基本使用
1.编写消息发送者 MQSender.java
package com.sxs.seckill.rabbitmq;

import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * Description: 消息发送者
 *
 * @Author sun
 * @Create 2024/5/11 14:04
 * @Version 1.0
 */
@Service
@Slf4j
public class MQSender {
    @Resource
    private RabbitTemplate rabbitTemplate;

    public void send(Object message) {
        log.info("发送消息: " + message);
        // 发送消息到队列,需要指定在配置类中配置的队列名
        rabbitTemplate.convertAndSend("queue", message);
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
2.编写消息接受者 MQReceiver.java
package com.sxs.seckill.rabbitmq;

import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Service;


/**
 * Description: 消息接收者
 *
 * @Author sun
 * @Create 2024/5/11 14:08
 * @Version 1.0
 */
@Service
@Slf4j
public class MQReceiver {

    // 方法,接收消息
    @RabbitListener(queues = "queue")
    public void receive(Object message) {
        log.info("接收消息: " + message);
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
3.控制层调用发送消息的方法
package com.sxs.seckill.controller;

import com.sxs.seckill.rabbitmq.MQSender;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;

/**
 * Description:
 *
 * @Author sun
 * @Create 2024/5/11 14:13
 * @Version 1.0
 */
@Controller
public class RabbitMQHandler {
    @Resource
    private MQSender mqSender;
    
    // 调用发送消息的方法
    @RequestMapping("/mq")
    @ResponseBody
    public void mq() {
        mqSender.send("hello rabbitmq");
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
4.启动测试
1.访问 http://localhost:9092/seckill/mq 成功发送和接受消息

image-20240511142633815

2.http://ip:15672 在控制台可以进行监控

image-20240511143128879

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/590799
推荐阅读
相关标签
  

闽ICP备14008679号