{"id":445,"date":"2021-06-18T07:17:27","date_gmt":"2021-06-18T07:17:27","guid":{"rendered":"http:\/\/robinluo.top\/?p=445"},"modified":"2021-06-18T07:17:27","modified_gmt":"2021-06-18T07:17:27","slug":"discoverclient-ribbon-feign-%e6%9c%8d%e5%8a%a1%e5%8f%91%e7%8e%b0%e4%b8%8e%e8%b0%83%e7%94%a8","status":"publish","type":"post","link":"https:\/\/robinluo.top\/?p=445","title":{"rendered":"DiscoverClient ribbon Feign \u670d\u52a1\u53d1\u73b0\u4e0e\u8c03\u7528"},"content":{"rendered":"\n<p>\u670d\u52a1\u53d1\u73b0\u662f \u670d\u52a1\u6cbb\u7406\u7684\u4e00\u4e2a\u5f88\u91cd\u8981\u7684\u70b9<\/p>\n\n\n\n<p>\u6240\u6709\u6ce8\u518c\u5728\u670d\u52a1\u5e73\u53f0\u7684\u5fae\u670d\u52a1  \u5fc5\u987b\u8981\u80fd\u88ab\u53d1\u73b0  \u7136\u540e\u8c03\u7528<\/p>\n\n\n\n<p>\u800c\u6211\u4eec\u8c03\u7528\u5176\u4ed6\u670d\u52a1\u4e00\u822c\u6709\u4e09\u79cd\u65b9\u6cd5<\/p>\n\n\n\n<p>DiscoverClient  ribbon  Feign<\/p>\n\n\n\n<p>DiscoverClient \u662f\u66f4\u52a0\u4f4e\u5c42\u7684\u65b9\u6cd5 \u5f53DiscoverClient \u9700\u8981\u5bfb\u627e\u670d\u52a1\u65f6 \u5176\u5b9e\u662f\u5411\u670d\u52a1\u6ce8\u518c\u5668\uff08\u4f8b\u5982 eureka\uff09 \u53d1\u9001 http \u8bf7\u6c42\u83b7\u53d6\u8eaf\u4f53\u670d\u52a1\u4fe1\u606f \u5305\u62ec ip port \u7b49<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@SpringBootApplication\n@EnableDiscoveryClient\nclass Application {\n\n    @Autowired\n    DiscoveryClient discoveryClient\n}<\/code><\/pre>\n\n\n\n<p>\u6dfb\u52a0\u4e86\u6ce8\u89e3@EnableDiscoveryClient<\/p>\n\n\n\n<p>\u7136\u540e\u5c31\u80fd\u81ea\u52a8 \u6ce8\u5165 discoverClient <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> @Autowired\n DiscoveryClient discoveryClient\n\n\n def restTemplate = new RestTemplate()\n def serverList = discoveryClient.getInstances(\"ROBIN-ADMIN\")\n println(serverList)\n        restTemplate.getForObject(\"${serverList&#91;0].getUri()}\/api\/ribbon\",Map.class)<\/code><\/pre>\n\n\n\n<p>\u83b7\u53d6\u5230discoverClient \u5c31\u80fd\u901a\u8fc7 \u670d\u52a1\u540d\u5b57 \u67e5\u627e\u670d\u52a1\u5b9e\u4f8b  \u5e76\u4e14\u901a\u8fc7RestTemplate \u8c03\u7528\u670d\u52a1\u63a5\u53e3\u4e86<\/p>\n\n\n\n<p>Ribbon\u662f\u8c03\u7528\u4e86 discoverClient \u8c03\u7528\u670d\u52a1\u7684 \u4f46\u662f\u4ed6\u63d0\u4f9b\u4e86 \u8d1f\u8f7d\u5747\u8861\u529f\u80fd\uff0c\u4e0d\u663e\u5f0f\u8c03\u7528\u67d0\u4e2a\u670d\u52a1\u5b9e\u4f8b \u800c\u662f\u901a\u8fc7\u7b56\u7565\u8c03\u7528\u67d0\u7c7b\u670d\u52a1\u7684\u5176\u4e2d\u4e00\u4e2a \u8fbe\u5230\u8d1f\u8f7d\u5747\u8861\u6548\u679c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\n@SpringBootApplication\nclass RibbonApplication {\n\n    @Bean\n    @LoadBalanced\n    RestTemplate restTemplate() {\n        return new RestTemplate()\n    }\n}<\/code><\/pre>\n\n\n\n<p>\u5728\u6ce8\u518cRestTemplate\u5bf9\u8c61\u65f6 \u6dfb\u52a0LoadBalanced \u6ce8\u89e3<\/p>\n\n\n\n<p>LoadBalanced \u4f1a\u81ea\u52a8\u5b9e\u4f8b\u5316restTemplate \u7684\u670d\u52a1\u5747\u8861\u7b56\u7565 \u5177\u4f53\u67e5\u770bLoadBalance\u63a5\u53e3 \u4f1a\u5b9a\u65f6ping\u5404\u4e2a\u670d\u52a1\u5b9e\u4f8b \u4e5f\u4f1a\u7528\u8b6c\u5982 \u56de\u73af\u8f6e\u8be2\u7b56\u7565 \u5bfb\u627e\u670d\u52a1\u5b9e\u4f8b<\/p>\n\n\n\n<p>\u5f53restTemplate \u8c03\u7528\u670d\u52a1\u65f6 \u901a\u8fc7\u7b56\u7565\u8c03\u7528\u670d\u52a1\u5b9e\u4f8b<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>restTemplate.getForObject(\"http:\/\/ROBIN-ADMIN\/api\/health\",Map.class)<\/code><\/pre>\n\n\n\n<p>ROBIN-ADMIN \u4e3a\u67d0\u7c7b\u670d\u52a1\u7684\u670d\u52a1ID<\/p>\n\n\n\n<p>Feign \u662f\u66f4\u52a0\u63a5\u8fd1\u4e1a\u52a1\u7684\u670d\u52a1\u8c03\u7528\u65b9\u5f0f<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>maven \u6dfb\u52a0\u4f9d\u8d56<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>        &lt;dependency>\n            &lt;groupId>org.springframework.cloud&lt;\/groupId>\n            &lt;artifactId>spring-cloud-starter-openfeign&lt;\/artifactId>\n        &lt;\/dependency><\/code><\/pre>\n\n\n\n<p>\u6dfb\u52a0Feign\u6ce8\u89e3<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@EnableFeignClients\nclass RibbonApplication {\n\n}<\/code><\/pre>\n\n\n\n<p>\u65b0\u5efa\u63a5\u53e3\u5bf9\u8c61<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package org.robin.ribbon.feign\n\nimport org.springframework.cloud.openfeign.FeignClient\nimport org.springframework.web.bind.annotation.RequestMapping\n\n@FeignClient(\"ROBIN-ADMIN\")\ninterface RobinAdminService {\n\n    @RequestMapping(\"\/api\/ribbon\")\n    Map ribbon()\n\n\n    @RequestMapping(\"\/api\/health\")\n    Map health()\n\n}<\/code><\/pre>\n\n\n\n<p>spring\u4f1a\u81ea\u52a8\u751f\u6210 RobinAdminService<\/p>\n\n\n\n<p>\u8c03\u7528\u8be5\u5bf9\u8c61\u7684\u65b9\u6cd5 \u53ef\u4ee5 \u8c03\u7528\u5bf9\u5e94\u5fae\u670d\u52a1\u7684\u63a5\u53e3<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u670d\u52a1\u53d1\u73b0\u662f \u670d\u52a1\u6cbb\u7406\u7684\u4e00\u4e2a\u5f88\u91cd\u8981\u7684\u70b9 \u6240\u6709\u6ce8\u518c\u5728\u670d\u52a1\u5e73\u53f0\u7684\u5fae\u670d\u52a1 \u5fc5\u987b\u8981\u80fd\u88ab\u53d1\u73b0 \u7136\u540e\u8c03\u7528 \u800c\u6211\u4eec\u8c03\u7528\u5176\u4ed6\u670d\u52a1\u4e00\u822c\u6709\u4e09\u79cd\u65b9\u6cd5 DiscoverClient ribbon Feign DiscoverClient \u662f\u66f4\u52a0\u4f4e\u5c42\u7684\u65b9\u6cd5 \u5f53DiscoverClient \u9700\u8981\u5bfb\u627e\u670d\u52a1\u65f6 \u5176\u5b9e\u662f\u5411\u670d\u52a1\u6ce8\u518c\u5668\uff08\u4f8b\u5982 eureka\uff09 \u53d1\u9001 http \u8bf7\u6c42\u83b7\u53d6\u8eaf\u4f53\u670d\u52a1\u4fe1\u606f \u5305\u62ec ip port \u7b49 \u6dfb\u52a0\u4e86\u6ce8\u89e3@EnableDiscoveryClient \u7136\u540e\u5c31\u80fd\u81ea\u52a8 \u6ce8\u5165 discoverClient \u83b7\u53d6\u5230discoverClient \u5c31\u80fd\u901a\u8fc7 \u670d\u52a1\u540d\u5b57 \u67e5\u627e\u670d\u52a1\u5b9e\u4f8b \u5e76\u4e14\u901a\u8fc7RestTemplate \u8c03\u7528\u670d\u52a1\u63a5\u53e3\u4e86 Ribbon\u662f\u8c03\u7528\u4e86 discoverClient \u8c03\u7528\u670d\u52a1\u7684 \u4f46\u662f\u4ed6\u63d0\u4f9b\u4e86 \u8d1f\u8f7d\u5747\u8861\u529f\u80fd\uff0c\u4e0d\u663e\u5f0f\u8c03\u7528\u67d0\u4e2a\u670d\u52a1\u5b9e\u4f8b \u800c\u662f\u901a\u8fc7\u7b56\u7565\u8c03\u7528\u67d0\u7c7b\u670d\u52a1\u7684\u5176\u4e2d\u4e00\u4e2a \u8fbe\u5230\u8d1f\u8f7d\u5747\u8861\u6548\u679c \u5728\u6ce8\u518cRestTemplate\u5bf9\u8c61\u65f6 \u6dfb\u52a0LoadBalanced \u6ce8\u89e3 LoadBalanced \u4f1a\u81ea\u52a8\u5b9e\u4f8b\u5316restTemplate \u7684\u670d\u52a1\u5747\u8861\u7b56\u7565 \u5177\u4f53\u67e5\u770bLoadBalance\u63a5\u53e3 \u4f1a\u5b9a\u65f6ping\u5404\u4e2a\u670d\u52a1\u5b9e\u4f8b \u4e5f\u4f1a\u7528\u8b6c\u5982 \u56de\u73af\u8f6e\u8be2\u7b56\u7565 \u5bfb\u627e\u670d\u52a1\u5b9e\u4f8b \u5f53restTemplate \u8c03\u7528\u670d\u52a1\u65f6 \u901a\u8fc7\u7b56\u7565\u8c03\u7528\u670d\u52a1\u5b9e\u4f8b ROBIN-ADMIN \u4e3a\u67d0\u7c7b\u670d\u52a1\u7684\u670d\u52a1ID [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[8],"tags":[92,90,91],"_links":{"self":[{"href":"https:\/\/robinluo.top\/index.php?rest_route=\/wp\/v2\/posts\/445"}],"collection":[{"href":"https:\/\/robinluo.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/robinluo.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/robinluo.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/robinluo.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=445"}],"version-history":[{"count":4,"href":"https:\/\/robinluo.top\/index.php?rest_route=\/wp\/v2\/posts\/445\/revisions"}],"predecessor-version":[{"id":556,"href":"https:\/\/robinluo.top\/index.php?rest_route=\/wp\/v2\/posts\/445\/revisions\/556"}],"wp:attachment":[{"href":"https:\/\/robinluo.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=445"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/robinluo.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=445"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/robinluo.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=445"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}