le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Il contenuto principale di questa sezione è creare il modulo gateway, registrare il gateway su Nacos e configurare il routing per il test.
Fare clic con il tasto destro sul progettoNew->Module
, crea un nuovo modulo, nome del modulo gulimall-gateway
。
Compila varie informazioni.
Seleziona Dipendenza gateway.
Fare clic su Crea per creare il modulo.
<dependency>
<groupId>com.atguigu.gulimall</groupId>
<artifactId>gulimall-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
Poiché il servizio gateway deve utilizzare anche il centro di registrazione e il centro di configurazione, richiede le dipendenze dei pacchetti correlati, che si ottengono facendo affidamento sul modulo comune.
Aggiungendo annotazioni alla classe di avvio, il servizio può essere registrato nel centro di registrazione dopo l'avvio.
@EnableDiscoveryClient
Crea tre nuovi file di configurazione nella directory delle risorse.
① proprietà dell'applicazione
Configurare le informazioni relative al centro di registrazione Nacos.
server.port=80
spring.cloud.nacos.discovery.server-addr=localhost:8848
spring.application.name=gulimall-gateway
② proprietà bootstrap
Configurare le informazioni rilevanti del centro di configurazione Nacos. Si noti che uno spazio dei nomi denominato gateway deve essere creato in anticipo su Nacos. Tutti i file di configurazione del modulo gateway vengono archiviati in questo spazio dei nomi.
spring.application.name=gulimall-gateway
spring.cloud.nacos.config.server-addr=localhost:8848
spring.cloud.nacos.config.namespace=405d2201-d62b-4203-80c8-800e9387ad40
③ applicazione.yml
In questo file, scrivere la configurazione del routing del gateway. Per i dettagli vedere la sezione successiva.
In questa parte, prendiamo due requisiti reali come esempi per esercitarci su come configurare il gateway.
Il ruolo del gateway è inoltrare le richieste ricevute ai servizi corrispondenti secondo le regole configurate dal gateway.
Per comodità di dimostrazione, supponendo che esista una tale richiesta, quando viene inserito il seguente URL nel browser, la richiesta verrà inoltrata a Baidu.
http://localhost/?url=baidu
Quando il seguente URL viene inserito nel browser, la richiesta verrà inoltrata a Tencent.
http://localhost/?url=qq
Come scrivere un file di configurazione?
Magazzino Spring Cloud GatewayDocumentazione ufficiale, fare riferimento al suo formato.
Poiché dobbiamo eseguire l'inoltro corrispondente in base alle condizioni della query sull'URL, troviamo il documento di configurazione dell'asserzione del Gateway su Query.
Fare riferimento a questo documento per la configurazione.
applicazione.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
Qui vengono definite due regole di routing per utilizzare i parametri di queryurl
Il valore determina l'URI di destinazione a cui deve essere inoltrata la richiesta.
spring.cloud.gateway.routes
: questo è l'elenco di configurazione del routing di Spring Cloud Gateway.
ogniroutes
L'elemento definisce una regola di routing.
id
: ciascuna regola di routing richiede un ID univoco per identificare e gestire i percorsi.
uri
: quando la regola di routing corrisponde, la richiesta verrà inoltrata a questo indirizzo URI.Quihttps://www.baidu.com
Ehttps://www.qq.com
Vengono specificati rispettivamente gli URL dei siti Web Baidu e Tencent.
predicates
: questo è l'elenco di asserzioni della regola di routing utilizzato per determinare se questa regola di routing deve essere applicata. Le asserzioni sono espressioni che vengono valutate in base ai metadati della richiesta.
Query=url,baidu
: Questa affermazione indica che se la richiesta contiene aurl
parametro di query e il suo valore è uguale abaidu
, questa regola di routing verrà attivata e la richiesta verrà inoltrata ahttps://www.baidu.com
。
Query=url,qq
: Allo stesso modo, se il parametro queryurl
Il valore èqq
, la richiesta verrà inoltrata ahttps://www.qq.com
。
In questo modo, quando la tua applicazione riceve un messaggio conurl=baidu
Ourl=qq
Quando si richiedono parametri di query, Spring Cloud Gateway invierà la richiesta al sito Web corrispondente in base alle regole di cui sopra.
Visita il seguente indirizzo nel tuo browser.
http://localhost/?url=baidu
Se si dispone dell'interfaccia sopra riportata, significa che la configurazione del servizio gateway e la configurazione del routing sono normali.
Verrà segnalato un errore durante l'avvio del 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
Il motivo è che il modulo Gateway dipende da common e il modulo common dichiara la sua dipendenza da mybatis. Il pacchetto mybatis cercherà le configurazioni relative al database all'avvio e il progetto Gateway non richiede un database, quindi non esiste una configurazione rilevante. .
La soluzione è dire al modulo gateway che non è necessario cercare configurazioni relative al database all'avvio e che è possibile escludere le dipendenze del pacchetto rilevanti dichiarando l'annotazione della classe di avvio.
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)