如何解决Spring Boot 微服务无法连接 Axon 服务器
我有一个包含三个微服务的 Spring Boot 微服务项目,用于测试分布式事务管理的 saga 模式。
当我使用 Axon Server
在本地运行 java -jar axonserver.jar
并使用 mvn spring-boot:run
运行 Spring Boot 微服务时,一切正常,我可以在 Axon Server 仪表板中看到所有微服务。
我在项目中添加了用于微服务的 Docker
文件和一个 docker-compose.yml
,以使用 docker-compose 运行整个项目。这是我的 docker-compose.yml
文件:
version: '3.8'
services:
axonserver:
image: axoniq/axonserver
hostname: axonserver
container_name: axonserver
volumes:
- type: bind
source: ./data
target: /data
- type: bind
source: ./events
target: /eventdata
- type: bind
source: ./config
target: /config
read_only: true
ports:
- '8024:8024'
- '8124:8124'
- '8224:8224'
networks:
- axon-demo
order-service:
container_name: "order-service"
build:
context: ./order-service
ports:
- "8080:8080"
depends_on:
- axonserver
networks:
- axon-demo
payment-service:
container_name: "payment-service"
build:
context: ./payment-service
ports:
- "8081:8081"
depends_on:
- axonserver
networks:
- axon-demo
shipping-service:
container_name: "shipping-service"
build:
context: ./shipping-service
ports:
- "8082:8082"
depends_on:
- axonserver
networks:
- axon-demo
networks:
axon-demo:
driver: bridge
我还在所有微服务的 application.properties
中添加了 axon-server,如下所示:
axon.axonserver.servers=axonserver:8124
运行 docker-compose up --build
命令后,微服务无法连接到 Axon 服务器,我收到此错误:
order-service | 2021-07-10 15:01:01.199 WARN 1 --- [rverConnector-0] o.a.a.c.AxonServerConnectionManager : Connecting to AxonServer node localhost:8124 failed: UNAVAILABLE: io exception
我的问题是为什么微服务在 localhost:8124
中寻找 axon 服务器,这显然是错误的,并且与它们在 application.properties
中的配置背道而驰:
axon.axonserver.servers=axonserver:8124
这里的 axonserver
是 Axon 服务器的容器名称。
解决方法
正如评论中所讨论的,问题出在您覆盖 Dockerfile
的 spring.config.location
上。通过从 Dockerfile
中删除它,问题应该得到解决。
您的属性文件包含以下内容:
axon.axonserver.servers=${AXONSERVER_HOST:axonserver:8124}
请在没有“:8124”的情况下尝试:
axon.axonserver.servers=${AXONSERVER_HOST:axonserver}
我认为 Spring Boot 被双“:”混淆了。端口 8124 是 Axon 服务器连接的默认端口,因此您可以毫无问题地将其忽略。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。