最新 Windows10 中安装RabbitMQ详细步骤及使用示例
最新 Windows10 中安装RabbitMQ详细步骤及使用示例
及大家好,我是闲者,今天记录下最新 2023 在 Windows10 中安装RabbitMQ的详细步骤,以供大家参考
一. 安装RabbitMQ服务器
1. 查看对应版本
在安装之前查看下RabbitMQ对应的erlang版本,这样可以避免很多问题。 查看地址
1. 下载
1.1. 下载erlang
原因:RabbitMQ服务端代码是使用并发式语言Erlang编写的,安装Rabbit MQ的前提是安装Erlang。 下载地址:http://www.erlang.org/downloads
这里下载 25.1版本,根据最对照表,最新的几个RabbitMQ都可以适用。
1.2. 下载RabbitMQ
下载地址:https://www.rabbitmq.com/download.html
根据对照表,下载最新的即可。
2. 安装
2.1. 安装ERLand
双击【otp_win64_25.1.exe】,安装ERLang,依次点下一步即可,可以自定一指定安装路径,这里使用的路径为:D:\File\Apache\MQ\RabbitMq\ErlangOTP
安装完成之后配置环境变量
此电脑–>点击右键–>属性–>高级系统配置–>环境变量–>系统变量–>新建
变量名:ERLANG_HOME
变量值就是刚才erlang的安装地址 “D:\File\Apache\MQ\RabbitMq\ErlangOTP”,点击确定。
双击点击path,点击“新建”,将%ERLANG_HOME%\bin加入到path中。
验证ERLang是否安装成功:
最后windows键+R键,输入cmd打开cmd控制台,在cmd控制台中输入erl,看到版本号就说明ERLang安装成功了。
erl
出现 Eshell V13.1则代表安装成功,如果未出现,则根据具体报错解决,一般都是环境变量配置问题。
2.2. 安装RabbitMQ
双击【rabbitmq-server-3.8.9.exe】安装RabbitMQ
指定安装路径为 D:\File\Apache\MQ\RabbitMq\RabbitMQServer
安装完成之后,RabbitMQ安装目录有下面那些文件:
打开cmd命令控制台,进入RabbitMQ安装目录下的sbin目录D:\File\Apache\MQ\RabbitMq\RabbitMQServer\sbin ,启动命令
rabbitmq-server start
出现以下界面则代表启动成功
查看RabbitMQ启动状态,在cmd控制台中输入:
rabbitmqctl status
注意:默认安装的RabbitMQ默认密码为:guest/guest
spring boot中的连接配置为:
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
3. 安装RabbitMQ管理插件
首先验证RabbitMQ后台管理功能是否安装,打开浏览器,输入http://localhost:15672 回车,此时打不开这个站点,是因为没有安装管理插件。
进入RabbitMQ的安装目录下的sbin目录 D:\File\Apache\MQ\RabbitMq\RabbitMQServer\sbin,输入下面命令激活后台管理:
rabbitmq-plugins enable rabbitmq_management
然后再次打开RabbitMQ后台管理
默认管理帐号与密码为guest/guest,登录进去
4. 常见问题
4.1 命令
RabbitMQ服务安装,停止,启动命令
进入安装目下的sbin目录,执行下面的命令:
rabbitmq-service.bat install 或 rabbitmq-service install
rabbitmq-service.bat stop 或 rabbitmq-service stop
rabbitmq-service.bat start 或 rabbitmq-server start
4.2 账号信息
查看当前账号信息,在sbin目录下打开控制台,执行:
rabbitmqctl.bat list_users
显示为:
Listing users ...
user tags
guest [administrator]
输出的解释:
user:这一列显示了 RabbitMQ 中的用户列表。
tags:这一列显示了与每个用户相关联的标签。在你提供的输出中,标签 [administrator] 表示名为 "guest" 的用户具有 "administrator" 标签。
具体来说,输出显示了一个名为 "guest" 的用户,该用户具有 "administrator" 标签。这意味着 "guest" 用户被授予了管理员权限,可以执行管理 RabbitMQ 的操作。
需要注意的是,默认情况下,RabbitMQ 在安装时会创建一个名为 "guest" 的用户,密码也是 "guest"。这个用户通常用于开发和测试目的,但在生产环境中,强烈建议创建自定义用户,并为其分配适当的权限,以提高安全性。不要在生产环境中继续使用默认的 "guest" 用户,因为它具有很高的权限,可能会带来潜在的安全风险。
如何设置新账号,有空了后期在说,这里仅用于测试。
二. 使用示例
在Spring Boot中使用RabbitMQ,你可以使用Spring Boot提供的集成来更方便地编写RabbitMQ生产者和消费者。
1. 添加依赖
示例使用的框架为Java spring boot。确保你的Spring Boot项目中已经配置了RabbitMQ依赖,可以在pom.xml文件中添加以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2. 连接配置
配置RabbitMQ连接信息,通常在application.properties或application.yml中配置:
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
3. RabbitMQ配置文件
sendMessage 方法中的消息发送到了 queue.getName() 指定的队列,其中 queue 是通过 Spring 注入的队列实例。默认情况下,这将是一个匿名队列
配置消费指定队列,配置名为 test 的队列,如果不配置,spring boot在启动时不会默认初始化队列,启动会报错。
package com.gly.zhongnan.mq.rabbit.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.amqp.core.Queue;
/**
* @author 闲者
* @date 2023-09-13 10:28
*/
@Configuration
public class RabbitMQConfig {
@Bean
public Queue myQueue() {
return new Queue("test");
}
//想要初始几个队列,就写几个bean
@Bean
public Queue myQueue1() {
return new Queue("test1");
}
}
这样,消费者就会监听名为 "test" 的队列,并处理从 sendMessage 发送的消息。确保队列名称在生产者和消费者之间匹配,以便消息可以正确地传递。
4. RabbitMQ生产者
创建一个RabbitMQ生产者。注意,这里使用定时器,每隔5秒发送消息,消费者进行消费测试
package com.gly.zhongnan.mq.rabbit.producer;
import com.alibaba.fastjson2.JSONObject;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author 闲者
* @date 2023-09-13 10:09
*/
@Component
public class RabbitMQProducer {
@Autowired
private RabbitTemplate rabbitTemplate;
// @Autowired
// private Queue queue;
//
// public void sendMessage(String message) {
// rabbitTemplate.convertAndSend(queue.getName(), message);
// System.out.println("Sent: " + message);
// }
@Scheduled(fixedDelay = 5000) // 每隔5秒发送一次消息
public void sendScheduledMessage() {
String exchangeName = ""; // 使用默认交换器
String routingKey = "test"; // 目标队列的名称
List<Map<String, Object>> messages = createMessages(); // 创建消息列表
for (Map<String, Object> message : messages) {
rabbitTemplate.convertAndSend(exchangeName, routingKey, JSONObject.toJSONString(message));
System.out.println("Sent: " + JSONObject.toJSONString(message));
}
}
private List<Map<String, Object>> createMessages() {
// 创建要发送的消息列表
List<Map<String, Object>> messages = new ArrayList<>();
// 添加消息
for (int i = 1; i <= 5; i++) {
Map<String, Object> message = new HashMap<>();
message.put("key", "value" + i);
messages.add(message);
}
return messages;
}
}
使用 convertAndSend 方法明确指定了交换器名称为空字符串(使用默认交换器),并将 routingKey 设置为 "test",这样消息就会发送到指定的队列。
在上述代码中,注入了RabbitTemplate和队列,然后使用rabbitTemplate来发送消息。
5. RabbitMQ消费者
生产者将消息发送到 "test" 队列,而消费者将监听该队列以接收消息。确保队列名称在生产者和消费者之间匹配,以便消息可以正确地传递。
package com.gly.zhongnan.mq.rabbit.consumer;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
/**
* @author 闲者
* @date 2023-09-13 10:10
*/
@Component
public class RabbitMQConsumer {
@RabbitListener(queues = "test")
public void receiveMessage(String message) {
System.out.println("Received: " + message);
// 处理接收到的消息
}
}
spring boot 成功启动后,定时器将自动进行消息发送和消费。
注意:这仅仅是个示例,可自定义更复杂的配置。
评论区