当前位置: 首页 > 知识库问答 >
问题:

发布路由到网关的微服务

袁耀
2023-03-14
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class ServiceRegistryApplication {

    public static void main(String[] args) {
        SpringApplication.run(ServiceRegistryApplication.class, args);
    }

}
server:
   port: 8761
   
eureka:
   client:
      fetch-registry: false
      register-with-eureka: false

网关主类:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
public class GatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication.class, args);
    }

}

application.yml

server:
   port: 8080
   
spring:
   application:
      name: GATEWAY
   cloud:
      gateway:
         routes:
            -id: MICROSERVICE
            uri: lb://MICROSERVICE
            predicates:
                - Path: /service/**

         
eureka:
   client:
      register-with-eureka: true
      fetch-registry: true
      service-url: 
         defualtZone: http://localhost:8761/eureka
   instance: localhost

微服务主类:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
public class MicroserviceApplication {

    public static void main(String[] args) {
        SpringApplication.run(MicroserviceApplication.class, args);
    }

}
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping
@RestController
public class HelloController {

    @GetMapping("/test")
    public String getWelcomed() {
        return "Welcome to Microservice !";
    }
}
server:
   port: 8099

spring:
   application:
      name: MICROSERVICE
   
eureka:
   client:
      register-with-eureka: true
      fetch-registry: true
      service-url: 
         defualtZone: http://localhost:8761/eureka
   instance: localhost

根据我找到的一些建议,我尝试从我的eureka服务器中隐藏网关,但问题仍然存在,将其添加到网关中的application.yml中:

eureka:
   client:
      register-with-eureka: false
      fetch-registry: false

共有1个答案

申辉
2023-03-14

控制器应

@RestController
@RequestMapping("/service")
public class HelloController

和URL:http://localhost:8080/service/test

或者您可以在控制器中保留@requestmapping()并使网关使用以下路径:

predicates:
 -Path=/**
 类似资料:
  • 我使用Spring创建微服务。我使用Eureka进行服务发现,使用Zuul进行路由。现在我想切换到Spring Cloud Gateway(因为它的非阻塞特性),但是我没有找到自动路由到每个Eureka服务的方法。 例如,如果一个服务'eureka-client'注册到了Eureka,那么Zuul本身就为这个服务提供了类似于localhost:8762/eureka-client的路径。使用Spr

  • 我用Spring靴。我正在处理一个缺陷。当我们通过Zuulendpoint调用帐户服务时,它会发出400个错误请求。帐户服务作为独立的,按预期工作。唯一的问题似乎是当呼叫通过Zuulendpoint路由/通过Zuulendpoint时。现在我正在调试这个。 我在localhost端口8032上启动了帐户服务,添加了调试点,并在POSTMAN中通过本地主机进行调用时验证了它的有效性。所以这一切照常进

  • 我们能在Spring Cloud API网关和没有服务发现的情况下生存吗?

  • 我有一个 Spring 启动应用程序正在运行并使用 Spring 云网关。该应用程序在 kubernetes 上运行(在 EKS 和本地 docker 桌面上尝试过)。我在访问指向另一个命名空间(非默认)中的服务的路由时遇到问题。当我启动 http://localhost:8080/actuator/gateway/routes 时,我看到下面的路线是路线之一 在应用程序中。yml,我添加了以下网

  • 我有一个简单的spring引导的微服务(用户服务)和一个spring引导的网关服务(网关-服务器),使用Zuul设置到Eureka服务器(发现服务)注册。向用户-服务发送请求直接起作用,并且所有服务都成功地注册到eureka服务器。当我向网关服务器发送请求时,我会得到一个转发错误,原因是“com.netflix.client.clientException:Load balancer没有用于客户端

  • { "cluster": "...", "route_config_name": "...", "refresh_delay_ms": "..." } cluster (required, string) 承载路由发现服务的上游群集的名称。群集必须实现和运行RDS HTTP API的REST服务。注:这是在群集管理器配置中定义的群集的名称,而不是群集的完整定义,如SDS和CDS的情况