【问题标题】:Architecture of a Spring Boot Application with ElasticSearch Reactive Streams具有 ElasticSearch 反应式流的 Spring Boot 应用程序的架构
【发布时间】:2019-10-31 21:36:49
【问题描述】:

我是 Spring Boot 的新手。 我不确定如何使用所有这些功能来构建我的应用程序:

0) 外部 JSON restful api
1) 休息 API
2) 反应式流
3) 弹性搜索
4) 微服务​​
5) MongoDB
6) 角前端

我连接到此资源以检索 JSON。由于它是外部的,我需要检索它,将其存储在我的 Mongo DB 数据库中,并不时检查外部资源 JSON 是否有更新并检索更新的字段。 然后我需要将此 JSON 传递给 ElasticSearch 服务器,该服务器将根据所做的一些查询返回响应。 我希望能够为此和微服务使用反应流,其中包括 oAuth2、restful API、令牌 API 服务、创建响应的服务,然后最后在前端使用搜索栏查询 Angular 或 React 页面elasticSearch 服务器中的 JSON 数据... 任何关于如何构建它的输入或指导将不胜感激......


【问题讨论】:

    标签: java mongodb elasticsearch microservices reactive


    【解决方案1】:

    您必须创建 @RestController bean 类和 @Service bean 类才能接收来自 Angular 前端的请求;

    一旦收到请求,使用服务(您使用@Autowired 将其注入某处)对外部源进行 http 调用以获取 JSON:这是服务到服务调用,因此您的后端服务是请求的客户端。

    获得 JSON 后,使用另一个 @Repository 服务对其进行处理并保存到 MongoDB。您必须使用配置文件配置 mongo 存储库。 在这里,您可以选择是使用 mongo 的对象关系映射还是直接使用没有更多内置层的 Java Mongo 驱动程序。

    在将 JSON 保存到 MongoDB 之前,您可以检查数据是否已更改,并根据此触发对 ElasticSearch Web 服务器的调用,就像您之前调用获取 JSON 所做的那样。

    如果 OAuth2 在外部服务器上,那么当你必须调用它们时,你必须添加一个有效的 TOKEN。 TOKEN 可能来自 Angular 前端的第一个请求,因为微服务必须是无状态的。 您在请求的标头中传递令牌。

    要第一次获取Token,Angular Front-End 必须实现Oath2 客户端,并且必须有一个Oauth2 服务器(可能是外部服务?)。

    调查是否必须在后端实现 Oauth2 客户端或服务器,因为它取决于所选的 Oauth2 流程:它们有很多变体。

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-12
      • 2021-04-17
      • 2019-08-13
      • 2021-01-15
      • 2019-12-26
      • 2018-04-07
      • 1970-01-01
      相关资源
      最近更新 更多