2016-09-30 7 views
1

저는 Jhipster를 처음 사용하기 때문에 RestTemplate이나 다른 것을 사용하여 게이트웨이 코드에서 마이크로 서비스를 수동으로 호출 할 수 있는지 궁금합니다.JHIPSTER 게이트웨이 저장소 또는 서비스에서 수동으로 마이크로 서비스를 호출하는 방법

첫 번째 아이디어는 게이트웨이 자체를 호출하는 것이지만 ... 좋은 생각인지는 잘 모르겠습니다. 두 번째 아이디어는 URL로 서비스를 호출하는 것입니다. 내 관심사는 내가 주어진 노드의 포트를 하드 코드하고 싶지 않다는 것이다. 대신 적절한로드 밸런싱을 사용하고 싶습니다.

이 기사는 https://dzone.com/articles/spring-cloud-rest-client-with-netflix-ribbon-basic이지만 읽지 못했습니다. 내가 루트로 넣어 하죠 무엇을 :

나는 다른 곳에서 지금 수동으로 빈 선언

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

를 추가해야하지만 지금은 실제 URI와 사투를 벌인거야 읽었습니다? (xxxxx는)이

final HcpVersionedhcp hcpVersionedhcp = 
      restTemplate.exchange("http://xxxxx/api/user-data/byLogin/", UserData.class); 

내 게이트웨이 application.yml에있는 유일한 구성은

ribbon: 
eureka: 
    enabled: true 

답변

3

은 "xxxxx는"당신의 서비스의 이름으로 대체되어야한다. 서비스가 "foo"인 경우 "http://foo/api/user ..."이라고 쓰는 것보다

인증으로 JWT를 사용하는 경우 JHipster에서 사용자 a를 사용하여 인증해야하거나 요청시 JWT 토큰을 전달해야합니다 가능한. 그러나 JWT 인증에는 모범 사례가 없으므로 JHipster UAA 방법을 제안합니다. 즉, 인증 및 권한 부여를 담당하는 서비스가 하나 더 있습니다. 다른 서비스에서 서비스에 액세스하려면 JPA와 유사한 인터페이스에서 @AuthorizedFeignClient을 사용할 수 있습니다.

그래서 당신은

+1

가 좋아 것 같습니다 ...

@AuthorizedFeignClient(name = "xxxx") interface XxxClient { @RequestMapping(value = "/api/some-entities/{id}") SomeEntity getSomeEntityById(Long @Path("id") id); } 

을 정의하고 내부 클라이언트 인증 흐름 구현이

@Inject private XxxClient xxxClient; //... pubic void someAction() { //... xxxClient.getEntityById(id); //.. } 

처럼 어떤 봄 서비스/나머지 컨트롤러에 주입 일하다. @EnableFeignClients를 추가해야했지만, 그 밖의 모든 것은 작동합니다. – ALansmanne