2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Der Hauptinhalt dieses Abschnitts besteht darin, das Gateway-Modul zu erstellen, das Gateway bei Nacos zu registrieren und das Routing zum Testen zu konfigurieren.
Klicken Sie mit der rechten Maustaste auf das ProjektNew->Module
, Erstellen Sie ein neues Modul, Modulname gulimall-gateway
。
Geben Sie verschiedene Informationen ein.
Wählen Sie Gateway-Abhängigkeit aus.
Klicken Sie auf Erstellen, um das Modul zu erstellen.
<dependency>
<groupId>com.atguigu.gulimall</groupId>
<artifactId>gulimall-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
Da der Gateway-Dienst auch das Registrierungscenter und das Konfigurationscenter verwenden muss, sind entsprechende Paketabhängigkeiten erforderlich, die durch die Verwendung gemeinsamer Module abgerufen werden.
Durch Hinzufügen von Anmerkungen zur Startklasse kann der Dienst nach dem Start im Registrierungscenter registriert werden.
@EnableDiscoveryClient
Erstellen Sie drei neue Konfigurationsdateien im Ressourcenverzeichnis.
① Anwendung.Eigenschaften
Konfigurieren Sie die Informationen zum Nacos-Registrierungscenter.
server.port=80
spring.cloud.nacos.discovery.server-addr=localhost:8848
spring.application.name=gulimall-gateway
② Bootstrap.Eigenschaften
Konfigurieren Sie die relevanten Informationen des Nacos-Konfigurationscenters. Beachten Sie, dass im Voraus ein Namespace mit dem Namen „Gateway“ erstellt werden muss. Alle Konfigurationsdateien des Gateway-Moduls werden in diesem Namespace gespeichert.
spring.application.name=gulimall-gateway
spring.cloud.nacos.config.server-addr=localhost:8848
spring.cloud.nacos.config.namespace=405d2201-d62b-4203-80c8-800e9387ad40
③ anwendung.yml
Schreiben Sie in diese Datei die Gateway-Routing-Konfiguration. Weitere Informationen finden Sie im nächsten Abschnitt.
In diesem Teil nehmen wir zwei tatsächliche Anforderungen als Beispiele, um die Konfiguration des Gateways zu üben.
Die Aufgabe des Gateways besteht darin, die empfangenen Anfragen gemäß den vom Gateway konfigurierten Regeln an die entsprechenden Dienste weiterzuleiten.
Zur Vereinfachung der Demonstration wird unter der Annahme, dass eine solche Anforderung besteht, die Anforderung an Baidu weitergeleitet, wenn die folgende URL in den Browser eingegeben wird.
http://localhost/?url=baidu
Bei Eingabe der folgenden URL im Browser wird die Anfrage an Tencent weitergeleitet.
http://localhost/?url=qq
Wie schreibe ich eine Konfigurationsdatei?
Repository Spring Cloud GatewayOffizielle Dokumentation, siehe dessen Format.
Da wir eine entsprechende Weiterleitung basierend auf den Abfragebedingungen für die URL durchführen müssen, finden wir das Assertionskonfigurationsdokument des Gateways zu Abfrage.
Informationen zur Konfiguration finden Sie in diesem Dokument.
anwendung.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
Hier werden zwei Routing-Regeln zur Verwendung von Abfrageparametern definierturl
Der Wert bestimmt den Ziel-URI, an den die Anfrage weitergeleitet werden soll.
spring.cloud.gateway.routes
: Dies ist die Routing-Konfigurationsliste von Spring Cloud Gateway.
jederoutes
Das Element definiert eine Routing-Regel.
id
: Jede Routing-Regel erfordert eine eindeutige ID zum Identifizieren und Verwalten von Routen.
uri
: Wenn die Routing-Regel übereinstimmt, wird die Anfrage an diese URI-Adresse weitergeleitet.Hierhttps://www.baidu.com
Undhttps://www.qq.com
Die URLs der Websites von Baidu und Tencent werden jeweils angegeben.
predicates
: Dies ist die Assertionsliste der Routing-Regel, die verwendet wird, um zu bestimmen, ob diese Routing-Regel angewendet werden soll. Behauptungen sind Ausdrücke, die basierend auf den Metadaten der Anfrage ausgewertet werden.
Query=url,baidu
: Diese Behauptung gibt an, dass, wenn die Anfrage a enthälturl
Abfrageparameter und sein Wert ist gleichbaidu
, dann wird diese Routing-Regel ausgelöst und die Anfrage wird weitergeleitethttps://www.baidu.com
。
Query=url,qq
: Ebenso, wenn der Abfrageparameterurl
Der Wert istqq
, die Anfrage wird weitergeleitet anhttps://www.qq.com
。
Auf diese Weise erhält Ihre Anwendung eine Nachricht miturl=baidu
oderurl=qq
Beim Anfordern von Abfrageparametern leitet Spring Cloud Gateway die Anforderung gemäß den oben genannten Regeln an die entsprechende Website weiter.
Rufen Sie die folgende Adresse in Ihrem Browser auf.
http://localhost/?url=baidu
Wenn Sie über die obige Schnittstelle verfügen, bedeutet dies, dass die Gateway-Service-Konfiguration und die Routing-Konfiguration normal sind.
Beim Start von Gateway wird ein Fehler gemeldet.
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
Der Grund dafür ist, dass das Gateway-Modul von Common abhängt und das Common-Modul seine Abhängigkeit von Mybatis angibt. Das Mybatis-Paket sucht beim Start nach datenbankbezogenen Konfigurationen und das Gateway-Projekt erfordert keine Datenbank, sodass keine relevante Konfiguration vorhanden ist .
Die Lösung besteht darin, dem Gateway-Modul mitzuteilen, dass beim Start keine Suche nach datenbankbezogenen Konfigurationen erforderlich ist und dass Sie relevante Paketabhängigkeiten ausschließen können, indem Sie die Annotation der Startup-Klasse deklarieren.
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)