我认为你不想使用API网关进行服务之间的通信。 API网关用于提供所有外部API调用正在进行的服务。
如果你不想使用消息,你可以直接使用 RestTemplate 如您所述,但请记住,如果您直接使用IP和端口引用服务,将来在不同的环境中运行它可能会很痛苦。
RestTemplate
我猜你正在使用Spring Cloud Netflix堆栈,如果是这种情况,我会说使用Eureka存储服务元数据并直接使用Feign。它与Eureka集成,您可以基本上将逻辑名称解析为实际的IP和端口号,如下所示:
http://some-service/endpoint -> http://12.34.56.78:9101/endpoint
在这种情况下,当您希望将应用程序部署到具有不同网络设置和端口配置的不同类型的环境中时,可以节省时间。
API网关不用于服务之间的通信,如前面的答案所述,它将成为访问您的微服务之前的请求的门。但是,您似乎希望采用同步微服务方法,这有以下缺点:
我能想到的唯一好处是,您的业务用例将比被动事件驱动的案例更好地控制和更清晰。