OpenFeign调用

bug01:

解决方法1:在其他模块调用找不到bean时,在api模块

解决方法2:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  com.hmall.api.client.UserClient\

4.1.1.引入依赖

cart-service服务的pom.xml中引入OpenFeign的依赖和loadBalancer依赖:

  <!--openFeign-->
  <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-openfeign</artifactId>
  </dependency>
  <!--负载均衡器-->
  <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-loadbalancer</artifactId>
  </dependency>

4.1.2.启用OpenFeign

接下来,我们在cart-serviceCartApplication启动类上添加注解,启动OpenFeign功能:

4.1.3.编写OpenFeign客户端

1.写一个client

@FeignClient(value = "user-service", configuration = UserClientFallbackFactory.class)
public interface UserClient {
    @PutMapping("/users/money/deduct")
    void deductMoney(@RequestParam("pw") String pw,@RequestParam("amount") Integer amount);

    @PutMapping("/users/lock")
     void lockUser(@RequestBody LockUserDTO dto);
}

2.写对应的fallback

public class UserClientFallbackFactory implements FallbackFactory<UserClient> {
    @Override
    public UserClient create(Throwable cause) {
        return new UserClient() {
            @Override
            public void deductMoney(String pw, Integer amount) {
                log.error("扣减余额异常,异常原因:", cause);
                throw new RuntimeException(cause);
            }
            @Override
            public void lockUser(LockUserDTO dto) {
            }
            public List<RoleDTO> queryUserRoles(Long userId) {
                log.error("解锁用户异常,异常原因:", cause);
                return Collections.emptyList();
            }
        };
    }
}

3.

posted @ 2024-07-19 17:35  冷风5997  阅读(37)  评论(0)    收藏  举报