config RabbitMQ in Win

如何在Windows 上配置 RabbitMQ

之前的电脑爆炸了,现在重装系统,以记录如何配置RabbitMQ

RabbitMQ_DOC
RabbitMQ_INSTALL

本地直接跑一个docker ,或者远程服务器

latest RabbitMQ 4.x

1
docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:4-management

下载windows包

访问RabbitMQ

到Installation Guides 下载Windows Installer

配置管理面板

到安装目录的 sbin 运行扩展安装管理面板
.\rabbitmq-plugins.bat enable rabbitmq_management

访问管理面板

管理员运行程序 RabbitMQ Service Start
打开local management

如果管理面板无法打开

还是在sbin 下

1
2
3
.\rabbitmqctl start_app
.\rabbitmq-plugins.bat enable rabbitmq_management
.\rabbitmqctl stop

随后确保 RabbitMQ Service Start

nginx 配置

Spring Boot 代码

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
### 项目启动同时启动消息队列,如果消息队列启动失败,则项目不应该启动成功
@Slf4j
@Component
public class InitRabbitMQ {

@PostConstruct
public void init() {
try {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
factory.setUsername("guest");
factory.setPassword("guest");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();

String EXCHANGE_NAME = "likaojbackendjudgeservice";
channel.exchangeDeclare(EXCHANGE_NAME, "direct");

String QUEUE_NAME = "judge_queue";
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, "judge_routingkey");
connection.close();
} catch (IOException | TimeoutException e) {
log.error("RabbitMQ init error: {}", e.getMessage());
}
log.info("RabbitMQ init success.");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
* 消息生产者
*/
@Component
public class MessageProducer {

@Resource
private RabbitTemplate rabbitTemplate;

/**
* 发送消息
*
* @param exchange the name of the exchange
* @param routingKey the routing key
* @param message a message to send
*/
public void sendMessage(String exchange, String routingKey, String message) {
rabbitTemplate.convertAndSend(exchange, routingKey, 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
29
30
/**
* 消费者代码
*/
@Slf4j
@Component
public class MessageConsumer {
@Resource
private JudgeService judgeService;

/**
* 消费者方法,用于接收消息并处理
*
* @param message 接收到的消息
* @param channel RabbitMQ通道
* @param deliveryTag 消息的唯一标识符
*/
@SneakyThrows
@RabbitListener(queues = {"judge_queue"}, ackMode = "MANUAL")
public void receiveMessage(String message, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag) {
log.info("Received message: {}", message);
try {
// 对message 进行消费 (调用其他方法或入参处理)
channel.basicAck(deliveryTag, false); // 确认消息已被消费
} catch (Exception e) {
log.error("Judge failed: {}", e.getMessage());
// 可以考虑入死信队列
channel.basicNack(deliveryTag, false, false);
}
}
}
1
2
3
4
5
6
# 如果引入了Springcloud alibaba 依赖,可以找下里面是否有rabbitMQ 的依赖
# 然后直接引入
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

config RabbitMQ in Win
https://likamao.github.io/2025/04/30/develop/config RabbitMQ in Win/
作者
YI MING HUANG
发布于
2025年4月30日
许可协议