Spring Boot集成RabbitMQ报java.util.concurrent.TimeoutException如何解决
问题根因
当前报错的核心原因是application.properties中配置的RabbitMQ连接端口错误:
- 15672是RabbitMQ管理后台的HTTP访问端口,仅用于网页端管理、API调用
- Spring Boot AMQP客户端需连接RabbitMQ的AMQP协议服务端口,默认值为5672
解决方法
1. 修正配置文件
把application.properties中的spring.rabbitmq.port修改为5672,修正后配置如下:
spring.rabbitmq.host=localhost spring.rabbitmq.port=5672 spring.rabbitmq.username=guest spring.rabbitmq.password=guest server.port=3033
2. 确认RabbitMQ容器端口映射正常
使用rabbitmq:3-management镜像启动容器时,需要同时映射AMQP端口和管理端口,标准启动命令如下:
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management
3. 额外排查项(修改端口后仍报错可检查)
- 访问http://localhost:15672,用guest/guest登录管理后台,确认RabbitMQ服务运行正常
- 检查本地防火墙、安全组规则,确认5672端口未被拦截
- 若RabbitMQ部署在非本地服务器,需创建新的用户并授予对应权限,默认guest用户仅允许本地访问
其他注意事项
你当前编写的Controller逻辑是向RabbitMQ发送消息,属于生产者角色,若需要实现消费者功能,还需要添加监听队列的方法,示例如下:
@Component public class RabbitConsumer { @RabbitListener(queues = RabbitConfig.QUEUE) public void consumeMessage(Note note) { System.out.println("接收到消息:" + note.getNote()); } }
内容的提问来源于stack exchange,提问作者user16624394
相关产品推荐
相关产品推荐

