当前位置: 首页 > article >正文

OpenFeign 使用案例教程

文章目录

    • 一、Nacos 部署
      • 1.1 启动 Nacos Server
      • 1.2 启用 Nacos 控制台
    • 二、微服务设置
      • 2.1 导入依赖
      • 2.2 创建微服务
      • 2.3 `application.yml` 配置
    • 三、创建微服务
      • 3.1 启用客户端
      • 3.2 创建 Feign 代理对象
      • 3.3 测试远程调用服务
    • 参考案例

完整示例代码参考: 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 官网


http://www.kler.cn/a/297401.html

相关文章:

  • 代码随想录打卡Day27
  • 【Oracle篇】全面理解优化器和SQL语句的解析步骤(含执行计划的详细分析和四种查看方式)(第二篇,总共七篇)
  • [数据集][目标检测]电动车入梯进电梯电单车入梯检测数据集VOC+YOLO格式7106张3类别
  • (六十八)第 10 章 内部排序(简单选择排序)
  • zookeeper是啥?在kafka中有什么作用
  • 暂停Windows更新方法
  • Arduino IDE安装操作指南
  • 协议层面优化a2dp性能
  • STM32 RTC实时时钟
  • 【数学建模】2024数学建模国赛经验分享
  • SpringCloud:Gateway
  • Spring Boot集成Hazelcast Jet快速入门DEMO
  • Oceanbase 数据库审计
  • cas单点登录流程揭密
  • 八、3 DMA数据转运(代码)
  • ICLR2024: 大视觉语言模型中对象幻觉的分析和缓解
  • 数学建模笔记——层次分析法
  • 图像去噪技术:传统中值滤波与改进中值滤波算法的比较
  • 虚幻引擎VR游戏开发02 | 性能优化设置
  • Docker打包镜像