我打算使用Spring WebFlux将微服务从阻止实现到反应性API。我几乎没有疑问:
1)是否选择基于注释的控制器还是功能路由器?2)是否有任何可用的反应式假装客户端的支持?
请帮助。
我发现这个问题不完整,没有适当的用法示例应如何设置。
由于OP没有提及目标语言,因此我想分享在我的情况下有效的Kotlin设置:
build.gradle.kts
implementation("org.springframework.boot:spring-boot-starter-webflux")
implementation("com.playtika.reactivefeign:feign-reactor-core:3.2.1")
implementation("com.playtika.reactivefeign:feign-reactor-spring-configuration:3.2.1")
implementation("com.playtika.reactivefeign:feign-reactor-webclient:3.2.1")
config.kt
@Configuration
@EnableWebFlux
@EnableReactiveFeignClients
class Config {
}
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?>?
}
然后在某些服务类中进行代码:
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)
您可以检查此库:https://github.com/playtika/feign-reactive
在Spring Webclient上实现了假装。带给你最好的 在一起两个世界:伪装的简明语法写作客户端API 在快速,异步和非阻滞http spring webclient
的http客户端