# pigeon **Repository Path**: devaper/pigeon ## Basic Information - **Project Name**: pigeon - **Description**: Pigeon(鸽子) 是一个灵活的远程调用客户端,支持重试与降级,可以独立使用,也可以与Spring进行整合 - **Primary Language**: Kotlin - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-05-25 - **Last Updated**: 2023-06-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: Kotlin, rpc ## README # Pigeon #### 介绍 Pigeon(鸽子) 是一个天然支持异步且灵活的远程调用客户端,支持重试与降级,可以独立使用,也可以与Spring进行整合。 之前项目中用到的技术,抽时间整理出来。 #### 简单使用 ```kotlin /** * 创建一个翻译接口Client */ interface TranslateClient { @GET("/api/{path}/index.php") fun translate( @Path("path") path: String = "api-fanyi-yd", @Query("msg") msg: String, @Query("type") type: Int = 1 ): Deferred> } /** * 翻译接口Client降级方法实现类 */ class TranslateClientFallback : TranslateClient { override fun translate(path: String, msg: String, type: Int): Deferred> { return Deferred.of(mapOf( "from" to "fallback" )) } } // 创建Pigeon并设置相关属性 val pigeon = Pigeon() .basePath("https://v.api.aa1.cn") // 内置的GrizzlyHttpClientEngine是基于NIO的AsyncHttpClient // https://github.com/eclipse-ee4j/grizzly-ahc .httpClientEngine(GrizzlyHttpClientEngine()) .httpMessageConverter(JacksonHttpMessageConverter()) .fallback(TranslateClientFallback()) // 创建Client实例 val translateClient = pigeon.createClient(TranslateClient::class.java) println(translateClient.translate(path = "x", msg = "你好").get()) ```