解决Feign不能同时支持两种请求方式

@PostMapping(value = "/attachments/{bizType}/{bizNo}")
@PutMapping(value = "put/attachments/{bizType}/{bizNo}")
RestResponse<UploadAttachmentResult> uploadAttachment(@PathVariable(value = "bizType") String bizType,
                                                      @PathVariable(value = "bizNo") String bizNo,
                                                      @RequestBody UploadRequest uploadRequest);

采用不同的路径进行不同方法映射,这个当然是不行的啦,为什么呢,因为Spring虽然支持这种写法,但是Feign不支持啊!Feign是不能同时支持两种请求方式的

所以最后面,我采用的方法是另起一个接口,然后把相关参数都写成一样的,果然还是copy香。。。。。但是还是要继续研究有没有更好的解决方案。

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Prometheus 中监控 Feign 请求,你需要使用 Spring Boot Actuator 和 Micrometer 库。 首先,确保在项目中引入了这两个库的依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> </dependency> ``` 然后,在代码中添加以下配置: ```java @Configuration public class MetricsConfig { @Bean public MeterRegistryCustomizer<MeterRegistry> commonTags() { return registry -> registry.config().commonTags("application", "your-application-name"); } } ``` 这将为所有的 Micrometer 计量器添加一个公共标记,以便在 Prometheus 中更好地跟踪它们。 接下来,在 Feign 的配置类中,添加一个拦截器以记录请求的计时信息: ```java @Configuration public class FeignConfig { @Bean public RequestInterceptor requestInterceptor(MeterRegistry registry) { return requestTemplate -> { Timer.Sample sample = Timer.start(registry); requestTemplate.header("X-Start-Time", String.valueOf(sample.wallTime())); requestTemplate.header("X-Start-Time-Nanos", String.valueOf(sample.nanos())); }; } } ``` 这将在 Feign 请求前添加两个自定义头,分别用于记录请求开始时间。接下来,您需要添加一个 Spring Boot Actuator 端点来公开这些计量器: ```java @Component @Endpoint(id = "metrics") public class MetricsEndpoint { private final MeterRegistry registry; public MetricsEndpoint(MeterRegistry registry) { this.registry = registry; } @ReadOperation public Map<String, Object> metrics() { Map<String, Object> metrics = new LinkedHashMap<>(); for (Meter meter : registry.getMeters()) { metrics.put(meter.getId().getName(), meter.measure()); } return metrics; } } ``` 这将创建一个名为“metrics”的端点,用于公开 Prometheus 可以抓取的所有计量器数据。 最后,在 Prometheus 的配置文件中添加以下配置: ```yaml scrape_configs: - job_name: 'your-job-name' metrics_path: '/actuator/prometheus' static_configs: - targets: ['your-application-host:your-application-port'] ``` 这将告诉 Prometheus 在指定的主机和端口上抓取来自 Spring Boot Actuator 端点的数据。现在,您应该能够在 Prometheus 中看到 Feign 请求的监控数据了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值