ビルドマイクロシリーズ(X)に春クラウドサービス:サービスが使用するナコスコールセンターopenfeignの間で登録され

現在ログオンしているユーザーを取得し、我々は、ユーザーが現在ログオンして取得する方法について説明します

私たちは、この1件の登録センターの観点から離陸した、実際には登録センターはマイクロサービスのコアコンポーネントです

この記事の出所:

送信元アドレス

一般的なレジストリ:

  • ユーレカはバージョン1.x、2.xバージョンが放棄されている維持します。レジストリの原則に属しCA
  • レジストリのZooKeeperの高い一貫性は、レジストリは、より良いサポートダボです
  • 領事は、大規模なシステムのために、そのユーレカの昇華を理解することができます
  • アリナコス新しいオープンソースのレジストリと構成センターの統合サービスを提供しています。

選択する方法に個々の要望に依存して実際には、上記のレジストリそれぞれが、自分の長所を持っています。

レジストリ構成のためここでは説明して基づいていますナコス

統合を参照してください。

登録センターの統合

統合されたレジストリの後、サービスへの公式の間の通話次のように:

@SpringBootApplication
@EnableDiscoveryClient
public class NacosConsumerApplication {

    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    public static void main(String[] args) {
        SpringApplication.run(NacosConsumerApplication.class, args);
    }

    @RestController
    public class TestController {

        private final RestTemplate restTemplate;

        @Autowired
        public TestController(RestTemplate restTemplate) {this.restTemplate = restTemplate;}

        @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
        public String echo(@PathVariable String str) {
            return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);
        }
    }
}

しかし、私は道に慣れopenfeignのために、それは少しは台無しですが、外部APIを呼び出す前に、書込み接続アドレスと実際に道にいたそれぞれが同じで、何もより今よりも内部コールになっていません。その後openfeign下での使用については、以下:

まずPOMファイルを高めるために導入:

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>

スタートクラスは、注釈を追加します。

@EnableFeignClients

サービスへの新しいコール:

@FeignClient(name = "user")
public interface UserService {
    /**
     * 通过用户名,或者email获取用户名
     * @param email
     * @return
     */
    @GetMapping("/user/email/{email}")
    ComResponse<User> getUserByEmail(@PathVariable("email") String email);

    /**
     * 通过用户名,或者email获取用户名
     * @param telephone
     * @return
     */
    @GetMapping("/user/tel/{telephone}")
    ComResponse<User> getUserByTel(@PathVariable("telephone") String telephone);

    /**
     * 根据用户查询角色
     * @param userId
     * @return
     */
    @GetMapping("/role/list/{userId}")
    ComResponse<List<Role>> listByUser(@PathVariable("userId") Long userId);
    /**
     * 通过用户查询权限
     * @param roleId
     * @return
     */
    @GetMapping("/permission/list/{roleId}")
    ComResponse<List<Permission>> listByRole(@PathVariable("roleId") Long roleId);
}

これは、それはまだ非常に身近な感じではありません。これは、直接サービスコールに導入することができます。

彼は183元記事に公開 ウォン称賛37 ビュー160 000 +を

おすすめ

転載: blog.csdn.net/zhuwei_clark/article/details/104790681