likes
comments
collection
share

SpringBoot微服务开发调试方法

作者站长头像
站长
· 阅读数 31

SpringBoot微服务开发调试方法

在微服务开发和调试过程中,我们需要确保服务能够在本地和远程环境中正常运行和调试。以下总结了两种有效的调试方法,供大家参考,并对关键代码进行了详细分析。

方法一:本地调试

步骤1:配置 application.yml

application.yml 文件中添加以下配置:

eureka:
  client:
    serviceUrl:
      defaultZone: http://${spring.boot.admin.client.username}:${spring.boot.admin.client.password}@<EUREKA_SERVER_URL>/eureka/
    register-with-eureka: false
  instance:
    prefer-ip-address: true
    ip-address: <LOCAL_IP_ADDRESS>

代码分析:

  • eureka.client.serviceUrl.defaultZone:指定 Eureka 服务器的 URL,其中包含了用户名和密码。此配置确保客户端可以正确连接到 Eureka 服务器进行服务发现。
  • eureka.client.register-with-eureka:设置为 false,表示当前服务不会注册到 Eureka 中。这在本地调试时很有用,因为已部署的服务无法发现你的本地服务,已部署的业务就不会流转到你的本地服务,从而不会影响已部署的环境。
  • eureka.instance.prefer-ip-address:设置为 true,表示服务实例更倾向于使用 IP 地址而不是主机名。
  • eureka.instance.ip-address:指定服务实例的 IP 地址。
  • <EUREKA_SERVER_URL>修改为你的Eureka 服务器的 URL
  • <LOCAL_IP_ADDRESS>修改为你本地IP

步骤2:跨服务调用修改

本地服务A在涉及跨服务B调用时,如果微服务B也需要进行debug(微服务B不需要debug的话,无需配置),那么需要修改本地服务A指向本地服务B的url,比如我的项目使用的是 FeignClient 配置,将 FeignClient 指向本地微服务B:

@FeignClient(url = "http://<LOCAL_IP_ADDRESS>:<LOCAL_SERVICE_PORT>")

代码分析:

  • @FeignClient(url = "http://<LOCAL_IP_ADDRESS>:<LOCAL_SERVICE_PORT>"):将 FeignClient 的 URL 指向本地服务B实例。这允许在本地调试本地服务A时依然可以直接调试本地服务B。请启动对应的本地服务B,url修改为你的本地服务B的IP。

步骤3:启动服务

启动需要调试的相关服务,确保服务注册到 Eureka 中。

步骤4:调用本机 IP 接口进行调试

在本地调用服务接口进行调试,无需调用已部署服务的IP接口,以确保服务的正常运行。

方法二:远程调试

步骤1:配置远程服务

进入远程服务器,修改对应服务的 run.sh 脚本,添加调试端口配置:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:9084

代码分析:

  • -agentlib:jdwp:启用 Java Debug Wire Protocol (JDWP) 代理,用于远程调试。
  • transport=dt_socket:指定调试传输方式为套接字。
  • server=y:表示 JVM 作为调试服务器运行。
  • suspend=n:表示 JVM 启动时不挂起,直接运行。
  • address=*:9084:指定调试服务器监听的地址和端口。在这里,* 表示绑定到所有网络接口,端口为 9084,端口根据需要修改。

步骤2:配置 IntelliJ IDEA

  1. 打开 IntelliJ IDEA,进入 Edit Configurations

SpringBoot微服务开发调试方法

  1. 添加新的配置,选择 Remote JVM Debug

SpringBoot微服务开发调试方法

  1. 填写名称与远程主机的 IP 地址和调试端口(如 9084),然后保存配置。

SpringBoot微服务开发调试方法

步骤3:启动远程调试

1.选中已创建的配置,并点击Debug调试。

SpringBoot微服务开发调试方法

2.控制台显示Connected代表远程连接成功,即可开始断调试。

SpringBoot微服务开发调试方法

注意:远程与本地代码需要保持一致!

通过以上两种方法,可以有效地进行本地和远程的微服务调试工作,确保服务的正常运行和稳定性。

转载自:https://juejin.cn/post/7382152932827545600
评论
请登录