Spring Boot应用连接AxonServer失败:网络未知原因关闭
核心问题分析
Dashboard能通过localhost:8024访问,说明AxonServer的HTTP服务正常,但Spring Boot客户端连接失败,大概率是客户端使用了错误的通信端口,或是版本兼容性、网络配置存在问题。AxonServer客户端依赖gRPC协议通信,默认端口为8124,而非Dashboard的8024端口。
解决方案
1. 修正客户端连接端口
修改application.properties中的AxonServer地址配置,将8024替换为gRPC专用的8124端口:
# Axon axon.axonserver.servers=localhost:8124 axon.serializer.general=jackson axon.serializer.events=jackson axon.serializer.messages=jackson
2. 验证8124端口的可访问性
在主机上执行以下命令,确认端口未被拦截:
# 测试端口连通性 nc -zv localhost 8124 # 或使用telnet telnet localhost 8124
如果连接失败,检查主机防火墙是否放行8124端口,或Docker端口映射是否生效。
3. 检查Docker容器内的端口监听状态
进入AxonServer容器,确认服务正常监听8124端口:
# 进入容器 docker exec -it axonserver bash # 查看端口监听 netstat -tulpn | grep 8124
输出应包含0.0.0.0:8124,表示允许外部访问。
4. 验证版本兼容性
你使用的AxonServer镜像版本是2024.1.2-jdk-17-nonroot,而Axon Framework版本为4.9.1,两者版本不兼容:
- AxonServer 2024.1.x 对应 Axon Framework 4.10.x 版本
- AxonServer 2023.1.x 对应 Axon Framework 4.9.x 版本
解决方式二选一:
- 升级Axon Framework到4.10.x:
<dependency> <groupId>org.axonframework</groupId> <artifactId>axon-server-connector</artifactId> <version>4.10.0</version> </dependency>
- 降级AxonServer到2023.1.x版本,修改docker-compose中的镜像:
image: axoniq/axonserver:2023.1.4-jdk-17-nonroot
5. 检查Docker网络配置(可选调试用)
如果使用默认bridge网络仍有问题,可临时切换为host网络调试(生产环境不推荐):
修改docker-compose.yml:
services: axonserver: # 其他配置不变 network_mode: host # 移除ports配置,host模式直接使用主机端口
6. 确认自定义AxonServer配置(若挂载了config目录)
如果你挂载的./config目录中有axonserver.properties,检查以下配置:
# 确保gRPC端口为8124 axoniq.axonserver.port=8124 # 允许外部访问,不要设为仅容器内部地址 axoniq.axonserver.hostname=0.0.0.0
内容的提问来源于stack exchange,提问作者Seyed Ali
相关产品推荐
相关产品推荐

