我打算创建一个微服务应用程序,并提供处理数据的专用服务(主要是基于Mongodb的服务)。我想知道是否有一种方法可以让我的其他微服务能够与此服务通信以利用共享数据。 JHipster API网关有可能吗? 如果不是我怎么能做到这一点。我不想在每个微服务中保留相同数据的多个副本。微服务如何可以与JHipster中的其他微服务对话
1
A
回答
1
您可以将所有微服务注册到相同的注册表,然后他们可以互相调用。
UPDATE:这是我如何使它工作。 在微服务消费的数据之一,使用RestTemplate与当前用户JWT令牌授权的头,使API调用:使用ClientHttpRequestInterceptor在头部添加标记
@Component
public class AuthenticateClientHttpRequestInterceptor implements ClientHttpRequestInterceptor {
@Override
public ClientHttpResponse intercept(HttpRequest httpRequest, byte[] bytes, ClientHttpRequestExecution clientHttpRequestExecution) throws IOException {
String token = SecurityUtils.getCurrentUserJWT();
httpRequest.getHeaders().add("Authorization","Bearer "+token);
return clientHttpRequestExecution.execute(httpRequest, bytes);
}
}
我定制restTemplate。
@Configuration
public class CustomBean {
@Autowired
AuthenticateClientHttpRequestInterceptor interceptor;
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
RestTemplate restTemplate = new RestTemplate();
restTemplate.setInterceptors(Collections.singletonList(interceptor));
return restTemplate;
}
}
而且在你正在进行的呼叫数据资源控制器:
@RestController
@RequestMapping("/api")
public class DataResource {
@Autowired
RestTemplate restTemplate;
@PostMapping("/hello")
@Timed
public ResponseEntity<Hello> createHello(@RequestBody Hello Hello) throws URISyntaxException {
//The name your data micro service registrated in the Jhipster Registry
String dataServiceName = "data_micro_service";
URI uri = UriComponentsBuilder.fromUriString("//" + dataServiceName + "/api/datas")
.build()
.toUri();
//call the data microservice apis
List<Data> result = restTemplate.getForObject(uri, Data[].class);
return ResponseEntity.created(new URI("/api/hellos/" + result.getId()))
.headers(HeaderUtil.createEntityCreationAlert(ENTITY_NAME, result.getId().toString()))
.body(result);
}
}
+0
救命!我一直试图弄清楚这几个星期了... –
+0
不客气! – freemanpolys
0
典型的微服务相互交谈。这就是整个问题。在发现Eureka的情况下,您只需通过名称而不是通常在没有微服务的情况下使用的FQDN来调用微服务。
例如,您book-service
将调用author-service
这样 http://author-service/authors
请不要忘记,JHipster是基于关春云的自以为是的框架,这样你就可以通过搜索春天文档发现大多数的这些东西。
相关问题
- 1. Jhipster 4.6.2微服务
- 2. 春微服务:响应与信息来自其他微服务
- 3. 微服务的其他服务
- 4. JHipster微服务实体
- 5. Spring Cloud微服务,与其他微服务一起使用密码保护的微服务
- 6. 在微服务架构中,微服务将如何服务?
- 7. JHipster微服务cloudfoundry部署错误
- 8. 揭露jhipster微服务客户端类
- 9. 发送参数微服务。 Jhipster 4.6.2
- 10. 春季启动微处理服务 - 从影响其他微服务
- 11. 微服务:如何存储许多微服务的源代码?
- 12. 在微服务
- 13. 如何监控(微)服务?
- 14. 互通微服务 - 如何?
- 15. 微服务与API网关
- 16. 微服务安全与AWS
- 17. 如何从JHIPSTER网关存储库或服务手动调用微服务
- 18. 与领事开始jHipster微服务的错误
- 19. graphql的微服务
- 20. JBOSS的微服务
- 21. SOA和微服务可以共存吗?
- 22. 优化微服务与其他域的数据
- 23. 如何使用jhipster登录微服务ui应用程序
- 24. 春季启动微服务框架如何从一个微服务调用另一个微服务
- 25. 微服务中的交易
- 26. 使用其他微服务进行其他调用
- 27. 微服务:服务发现和服务注册与阿卡
- 28. 如何将数据库与微服务(和新服务)同步?
- 29. SemVer和微服务
- 30. 微服务通信
微服务之间的依赖关系应尽可能避免,它只会让您的整体解决方案变得更慢更弱,这可能表明您的域边界是错误的(请参阅DDD)。您的问题缺乏详细信息,但网关将JWT令牌传递给可将其转发给其他服务的服务 –
不要执行专用数据存储。每个MS应该有自己的持久性。 –