Cha*_*hra 6 spring microservices spring-cloud spring-cloud-feign spring-webflux
我计划使用 spring webflux 将我的微服务从阻塞实现重构为反应式 API。我有几个疑问:
1)是否选择基于注解的控制器或功能路由器?2) 是否支持反应式假装客户端?
请帮忙。
您可以检查这个库: https: //github.com/Playtika/feign-reactive
Feign 在 Spring WebClient 上的实现。为您带来两个世界的优点:使用 Feign 的简洁语法在 Spring WebClient 的快速、异步和非阻塞 HTTP 客户端上编写客户端 API
我发现这个问题不完整,没有关于如何设置的正确使用示例。
由于 op 没有提到目标语言,我想分享适用于我的情况的 Kotlin 设置:
build.gradle.kts
implementation("org.springframework.boot:spring-boot-starter-webflux")
implementation("com.playtika.reactivefeign:feign-reactor-core:2.0.22")
implementation("com.playtika.reactivefeign:feign-reactor-spring-configuration:2.0.22")
implementation("com.playtika.reactivefeign:feign-reactor-webclient:2.0.22")
Run Code Online (Sandbox Code Playgroud)
配置文件
@Configuration
@EnableWebFlux
@EnableReactiveFeignClients
class Config {
}
Run Code Online (Sandbox Code Playgroud)
MyFeignClient.kt
@Component
@ReactiveFeignClient(
url = "\${package.service.my-service-url}",
name = "client"
)
interface MyFeignClient {
@GetMapping(value = ["/my/url?my_param={my_value}"], consumes = ["application/json"])
fun getValues(
@PathVariable(name = "my_value") myValue: String?,
): Mono<MyEntity?>?
}
Run Code Online (Sandbox Code Playgroud)
然后这里是一些服务类中的代码:
val myClient: MyFeignClient = WebReactiveFeign.builder<MyFeignClient>()
.contract(ReactiveContract(SpringMvcContract()))
.target(MyFeignClient::class.java, "http://example.com")
// feel free to add .block() to get unpacked value or just chain your logic further
val response = myClient.getValues(param)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9383 次 |
| 最近记录: |