You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

添加@LoadBalanced注解后HTTP GET请求返回500服务器错误排查

问题排查与解决方案

1. 修复代码中的语法错误

你的CatalogService里的getRatingRestTemplate方法缺少返回语句,这会直接导致运行异常,先补上:

public Rating getRatingRestTemplate (String movieId) {
    Rating rating = restTemplate.getForObject("http://MOVIE-RATING-SERVICE/ratings/rest/"+movieId, Rating.class);
    return rating; // 新增返回语句
}

2. 引入Spring Cloud LoadBalancer依赖

使用@LoadBalanced注解时,必须依赖Spring Cloud LoadBalancer组件(原Ribbon已被弃用),根据你的构建工具添加依赖:

Maven 配置

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

Gradle 配置

implementation 'org.springframework.cloud:spring-cloud-starter-loadbalancer'

3. 核对服务名一致性

确认Eureka控制台中显示的服务名(如MOVIE-INFO-SERVICE、MOVIE-RATING-SERVICE)和代码中调用的完全一致,服务名大小写敏感,不能有拼写错误。

4. 完善Eureka客户端配置

在MOVIE-CATALOG-SERVICE的配置文件中,确保开启服务发现功能:

spring:
  application:
    name: MOVIE-CATALOG-SERVICE
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/ # 替换为你的Eureka地址
    fetch-registry: true
    register-with-eureka: true

5. 确保RestTemplate注入正确

如果项目中存在多个RestTemplate Bean,需要用@Qualifier指定注入带@LoadBalanced的实例:

@Service
public class CatalogService {

    @Autowired
    @Qualifier("getRESTTemplate") // 对应配置类中Bean的方法名
    private RestTemplate restTemplate;

    // ... 其他代码
}

6. 验证网络与注册连通性

  • 确认MOVIE-CATALOG-SERVICE已在Eureka控制台显示为已注册状态
  • 检查本地防火墙是否拦截服务间请求,若用容器部署需确保服务在同一网络环境

内容的提问来源于stack exchange,提问作者Einstein_AB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 02:05:26