【问题标题】:Forward http requests based on data from the request body根据请求正文中的数据转发 http 请求
【发布时间】:2018-10-11 07:05:08
【问题描述】:

我有一个包含许多控制器方法的服务。我的任务是将此服务“拆分”为微服务。

微服务本身将部署在其他机器上。 Nginx 按位置重定向。

主要问题是有一个位置http://mydomain/myservice/srv/data 接收不同类型的请求。

并且根据请求体中a字段的值调用之后的逻辑。

例如两个请求:

  • <request type="getname" val="1"/>
  • <request type="balance" val="1"/>

第一个请求必须转发到http://mydomain/myservice1/data/name,第二个请求必须转发到http://mydomain/myservice2/data/balance

问题:是否有用于此类目的的库?

UPD:我正在写基于RouteLocator(spring cloud)的简单jar;是否有另一种方法可以做到这一点? Spring Cloud 不是我们熟悉的栈。

【问题讨论】:

    标签: java spring servlets routing microservices


    【解决方案1】:

    你可以看看spring integration,它实现了大部分enterprise integration patterns,包括content based routing

    【讨论】:

      【解决方案2】:

      我认为根据body中不同的请求类型来代理请求的方式并不是一个好的代理方式。 URI 最终应该负责它所服务的请求类型以及它应该响应的响应类型。

      客户端拥有有关请求类型以及发送请求的位置的所有必要信息。根据这一事实,我会将您拥有的资源重构为处理不同请求类型的不同资源,并为每个资源确定有效负载的显式架构。

      总而言之,实现如下所示:

      • 为不同类型的请求重构服务器逻辑到他们自己的资源 URIs
      • 将发送请求的逻辑移到客户端,可能使用工厂模式之类的东西

      【讨论】:

      • 你是对的。但我不能那样做。 URI 应该保留(((
      猜你喜欢
      • 1970-01-01
      • 2013-10-07
      • 1970-01-01
      • 2018-05-14
      • 2021-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多