OpenFeign 使用案例教程

完整示例代码参考: java-demos/spring-cloud-openfeign at main · idealzouhu/java-demos (github.com)

一、Nacos 部署

1.1 启动 Nacos Server

docker run ^
-d -p 8848:8848 ^
-p 9848:9848 ^
--name nacos-test ^
-e MODE=standalone ^
-e TIME_ZONE='Asia/Shanghai' ^
nacos/nacos-server:v2.1.2

部分指令的含义如下:

  • -e MODE=standalone: 使用环境变量 MODE 设置 Nacos 的启动模式。这里设置为 standalone 模式,意味着单机模式运行(适合开发环境使用)。在生产环境中,通常会配置为集群模式。
  • -e TIME_ZONE='Asia/Shanghai': 设置容器内的时区为 Asia/Shanghai,即中国标准时间(CST,东八区)

1.2 启用 Nacos 控制台

运行成功,稍等几秒启动时间,浏览器输入 http://localhost:8848/nacos/index.html 查看控制台。

二、微服务设置

2.1 导入依赖

<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

        <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>

2.2 创建微服务

创建多个微服务Order ServicePayment ServiceNotification Service。这些微服务将通过 Nacos 进行服务注册和发现,它们之间有特定的关系和交互方式。

不同微服务之间的关系为:

  • Order Service 处理用户的订单,并在订单创建时调用 Payment Service 来处理支付。
  • Payment Service 处理支付请求,并在支付成功时调用 Notification Service 发送通知。
  • Notification Service 负责发送通知,例如订单状态更新通知

2.3 application.yml 配置

除了 spring.application.nameserver.port, 不同微服务之间的配置基本上差不多。

spring:
  application:
    name: order-service
  cloud:
    nacos:
      # nacos 注册中心
      discovery:
        server-addr: 127.0.0.1:8848   # nacos 注册中心地址
        namespace: public
server:
  port: 9000

三、创建微服务

由于这些微服务的代码基本类似,本文只展示如何创建 Order Service 。

3.1 启用客户端

使用 @EnableDiscoveryClient

注意:如果不使用 @EnableDiscoveryClient 注解的话,@FeignClient 注解将无法使用。

@SpringBootApplication
@EnableFeignClients(basePackages = "com.zouhu.orderservice.remote")
public class OrderServiceApplication {

	public static void main(String[] args) {
		SpringApplication.run(OrderServiceApplication.class, args);
	}

}

3.2 创建 Feign 代理对象

使用注解 @FeignClient 创建代理对象。

@FeignClient(name = "pay-service")      // 定义一个 Feign 客户端接口,用于远程调用其他服务
public interface PayRemoteService {

    // 定义远程调用方法
    @GetMapping("/pay/process")
    String processPayment();

}

3.3 测试远程调用服务

在运行所有微服务后,运行 http://localhost:9000/order/create

@RestController
@RequestMapping("/order")
public class OrderController {
    @Autowired
    private PayRemoteService payRemoteService;

    /**
     * 创建订单并调用支付服务
     * <p>
     *     调用方法链接: http://localhost:9000/order/create
     *     Nacos控制台访问链接: http://localhost:8848/nacos/index.html
     * </p>
     *
     * @return
     */
    @GetMapping("/create")
    public String createOrder() {
        String paymentStatus = payRemoteService.processPayment();
        return "Order created! Payment status: " + paymentStatus;
    }

}

参考案例

Spring Cloud OpenFeign 中文文档 (springdoc.cn)

Nacos Docker 快速开始 | Nacos 官网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值