RabbitMQ(安装设置以及与SpringBoot整合)

打印 上一主题 下一主题

主题 525|帖子 525|积分 1575

1.基本先容


2.Linux下安装设置RabbitMQ

1.安装erlang情况

1.将文件上传到/opt目次下


2.进入/opt目次下,然后安装

  1. cd /opt && rpm -ivh erlang-21.3-1.el7.x86_64.rpm
复制代码

2.安装RabbitMQ

1.进入/opt目次,安装所需依赖

  1. cd /opt && yum install socat -y
复制代码

2.安装MQ

  1. rpm -ivh rabbitmq-server-3.8.8-1.el7.noarch.rpm
复制代码

3.基本设置

1.启动MQ

  1. /sbin/service rabbitmq-server start
复制代码

2.查看MQ状态

  1. /sbin/service rabbitmq-server status
复制代码

3.安装web管理插件

  1. rabbitmq-plugins enable rabbitmq_management
复制代码

4.安装web管理插件超时的解决方案

1.修改etc/hosts文件,修改主机名



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


5.设置开机自启

  1. chkconfig rabbitmq-server on
复制代码

6.关闭MQ

  1. /sbin/service rabbitmq-server stop
复制代码

7.组合指令

1.启动MQ并查看状态

  1. /sbin/service rabbitmq-server start
  2. && /sbin/service rabbitmq-server status
复制代码

2.关闭MQ并查看状态

  1. /sbin/service rabbitmq-server stop
  2. && /sbin/service rabbitmq-server status
复制代码

3.重启MQ并查看状态

  1. /sbin/service rabbitmq-server stop
  2. && /sbin/service rabbitmq-server start
  3. && /sbin/service rabbitmq-server status
复制代码

4.RabbitMQ管控台设置

1.开放15672端口

1.宝塔开启

  1. systemctl start firewalld && firewall-cmd --permanent --add-port=15672/tcp && firewall-cmd --reload && firewall-cmd --query-port=15672/tcp
复制代码

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


2.访问 http://ip:15672 进行登录

1.使用guest用户登录,出现权限问题


2.进入/etc/rabbitmq 编辑 rabbitmq.config

  1. cd /etc/rabbitmq && vim rabbitmq.config
复制代码

3.将下面这句话粘贴进去

  1. [
  2. {
  3.         rabbit,
  4.                 [{
  5.                         loopback_users,[]
  6.                 }]
  7. }
  8. ].
复制代码

4.重启MQ,使设置生效

  1. /sbin/service rabbitmq-server stop
  2. && /sbin/service rabbitmq-server start
  3. && /sbin/service rabbitmq-server status
复制代码
5.再次登录,成功!


3.控制台参数解析

1.端口


2.互换机,默认七个


4.用户管理

1.进入Admin


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



3.给test用户分配可以访问的假造主机




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


5.增加假造主机

1.添加/test的假造主机


2.设置test用户可以访问假造主机/test



3.删除test用户



5.SpringBoot集成MQ

1.需求分析


2.情况设置

1.引入依赖

  1.         <!--rabbitmq-需要的 AMQP 依赖-->
  2.         <dependency>
  3.             <groupId>org.springframework.boot</groupId>
  4.             <artifactId>spring-boot-starter-amqp</artifactId>
  5.         </dependency>
复制代码
2.MQ的端口设置

1.编辑MQ的设置文件

  1. cd /etc/rabbitmq && vim rabbitmq.config
复制代码
2.修改端口5672为6783(防止被攻击)

  1. [
  2.     {rabbit, [
  3.         {tcp_listeners, [{"0.0.0.0", 6783}]},
  4.         {loopback_users, []}
  5.     ]}
  6. ].
复制代码
3.重启MQ使其生效

  1. /sbin/service rabbitmq-server stop
  2. && /sbin/service rabbitmq-server start
  3. && /sbin/service rabbitmq-server status
复制代码
4.测试是否成功

  1. netstat -plnt | grep 6783
复制代码

5.宝塔开启6783端口

  1. systemctl start firewalld && firewall-cmd --permanent --add-port=6783/tcp && firewall-cmd --reload && firewall-cmd --query-port=6783/tcp
复制代码

6.腾讯云开启


3.设置application.yml

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

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

1.编写消息发送者 MQSender.java

  1. package com.sxs.seckill.rabbitmq;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.springframework.amqp.rabbit.core.RabbitTemplate;
  4. import org.springframework.stereotype.Service;
  5. import javax.annotation.Resource;
  6. /**
  7. * Description: 消息发送者
  8. *
  9. * @Author sun
  10. * @Create 2024/5/11 14:04
  11. * @Version 1.0
  12. */
  13. @Service
  14. @Slf4j
  15. public class MQSender {
  16.     @Resource
  17.     private RabbitTemplate rabbitTemplate;
  18.     public void send(Object message) {
  19.         log.info("发送消息: " + message);
  20.         // 发送消息到队列,需要指定在配置类中配置的队列名
  21.         rabbitTemplate.convertAndSend("queue", message);
  22.     }
  23. }
复制代码
2.编写消息继承者 MQReceiver.java

  1. package com.sxs.seckill.rabbitmq;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.springframework.amqp.rabbit.annotation.RabbitListener;
  4. import org.springframework.stereotype.Service;
  5. /**
  6. * Description: 消息接收者
  7. *
  8. * @Author sun
  9. * @Create 2024/5/11 14:08
  10. * @Version 1.0
  11. */
  12. @Service
  13. @Slf4j
  14. public class MQReceiver {
  15.     // 方法,接收消息
  16.     @RabbitListener(queues = "queue")
  17.     public void receive(Object message) {
  18.         log.info("接收消息: " + message);
  19.     }
  20. }
复制代码
3.控制层调用发送消息的方法

  1. package com.sxs.seckill.controller;
  2. import com.sxs.seckill.rabbitmq.MQSender;
  3. import org.springframework.stereotype.Controller;
  4. import org.springframework.web.bind.annotation.RequestMapping;
  5. import org.springframework.web.bind.annotation.ResponseBody;
  6. import javax.annotation.Resource;
  7. /**
  8. * Description:
  9. *
  10. * @Author sun
  11. * @Create 2024/5/11 14:13
  12. * @Version 1.0
  13. */
  14. @Controller
  15. public class RabbitMQHandler {
  16.     @Resource
  17.     private MQSender mqSender;
  18.    
  19.     // 调用发送消息的方法
  20.     @RequestMapping("/mq")
  21.     @ResponseBody
  22.     public void mq() {
  23.         mqSender.send("hello rabbitmq");
  24.     }
  25. }
复制代码
4.启动测试

1.访问 http://localhost:9092/seckill/mq 成功发送和继承消息


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



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

伤心客

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表