Mi informacion de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
El contenido principal de esta sección es crear el módulo de puerta de enlace, registrar la puerta de enlace en Nacos y configurar el enrutamiento para pruebas.
Haga clic derecho en el proyecto.New->Module
, crea un nuevo módulo, nombre del módulo gulimall-gateway
。
Complete información diversa.
Seleccione Dependencia de puerta de enlace.
Haga clic en Crear para crear el módulo.
<dependency>
<groupId>com.atguigu.gulimall</groupId>
<artifactId>gulimall-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
Debido a que el servicio de puerta de enlace también necesita utilizar el centro de registro y el centro de configuración, requiere dependencias de paquetes relacionados, que se obtienen confiando en el módulo común.
Al agregar anotaciones a la clase de inicio, el servicio se puede registrar en el centro de registro después del inicio.
@EnableDiscoveryClient
Cree tres nuevos archivos de configuración en el directorio de recursos.
① propiedades de la aplicación
Configure la información relacionada con el centro de registro de Nacos.
server.port=80
spring.cloud.nacos.discovery.server-addr=localhost:8848
spring.application.name=gulimall-gateway
② propiedades de bootstrap
Configure la información relevante del centro de configuración de Nacos. Tenga en cuenta que se debe crear un espacio de nombres llamado puerta de enlace en Nacos de antemano. Todos los archivos de configuración del módulo de puerta de enlace se almacenan en este espacio de nombres.
spring.application.name=gulimall-gateway
spring.cloud.nacos.config.server-addr=localhost:8848
spring.cloud.nacos.config.namespace=405d2201-d62b-4203-80c8-800e9387ad40
③ aplicación.yml
En este archivo, escriba la configuración de enrutamiento de la puerta de enlace. Consulte la siguiente sección para obtener más detalles.
En esta parte, tomamos dos requisitos reales como ejemplos para practicar cómo configurar la puerta de enlace.
La función de la puerta de enlace es reenviar las solicitudes recibidas a los servicios correspondientes de acuerdo con las reglas configuradas por la puerta de enlace.
Para facilitar la demostración, suponiendo que exista tal demanda, cuando se ingrese la siguiente URL en el navegador, la solicitud se reenviará a Baidu.
http://localhost/?url=baidu
Cuando se ingresa la siguiente URL en el navegador, la solicitud se reenviará a Tencent.
http://localhost/?url=qq
¿Cómo escribir un archivo de configuración?
Puerta de enlace de Spring Cloud de almacénDocumentación oficial, consulte su formato.
Debido a que necesitamos realizar el reenvío correspondiente según las condiciones de consulta en la URL, encontramos el documento de configuración de aserción de Gateway sobre Consulta.
Consulte este documento para la configuración.
aplicación.yml
spring:
cloud:
gateway:
routes:
- id: baidu_test
uri: https://www.baidu.com
predicates:
- Query=url,baidu
- id: qq_test
uri: https://www.qq.com
predicates:
- Query=url,qq
Aquí se definen dos reglas de enrutamiento para usar parámetros de consulta.url
El valor determina el URI de destino al que se debe reenviar la solicitud.
spring.cloud.gateway.routes
: Esta es la lista de configuración de enrutamiento de Spring Cloud Gateway.
cadaroutes
El elemento define una regla de enrutamiento.
id
: cada regla de enrutamiento requiere una identificación única para identificar y administrar rutas.
uri
: Cuando la regla de enrutamiento coincida, la solicitud se reenviará a esta dirección URI.aquíhttps://www.baidu.com
yhttps://www.qq.com
Las URL de los sitios web de Baidu y Tencent se especifican respectivamente.
predicates
: Esta es la lista de aserciones de la regla de enrutamiento que se utiliza para determinar si se debe aplicar esta regla de enrutamiento. Las aserciones son expresiones que se evalúan en función de los metadatos de la solicitud.
Query=url,baidu
: Esta afirmación indica que si la solicitud contiene unurl
parámetro de consulta, y su valor es igual abaidu
, entonces esta regla de enrutamiento se activará y la solicitud se reenviará ahttps://www.baidu.com
。
Query=url,qq
: De manera similar, si el parámetro de consultaurl
El valor esqq
, la solicitud será enviada ahttps://www.qq.com
。
De esta manera, cuando su aplicación reciba un mensaje conurl=baidu
ourl=qq
Al solicitar parámetros de consulta, Spring Cloud Gateway enviará la solicitud al sitio web correspondiente de acuerdo con las reglas anteriores.
Visite la siguiente dirección en su navegador.
http://localhost/?url=baidu
Si tiene la interfaz anterior, significa que la configuración del servicio de puerta de enlace y la configuración de enrutamiento son normales.
Se informará un error durante el inicio de Gateway.
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2024-07-11 15:57:32.988 ERROR 27224 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :
***************************
APPLICATION FAILED TO START
***************************
Description:
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
Reason: Failed to determine a suitable driver class
La razón es que el módulo Gateway depende de común, y el módulo común declara su dependencia de mybatis. El paquete mybatis buscará configuraciones relacionadas con la base de datos al inicio y el proyecto Gateway no requiere una base de datos, por lo que no hay ninguna configuración relevante. .
La solución es decirle al módulo de puerta de enlace que no es necesario buscar configuraciones relacionadas con la base de datos al inicio y que puede excluir dependencias de paquetes relevantes declarándolas en la anotación de clase de inicio.
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)