τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Το κύριο περιεχόμενο αυτής της ενότητας είναι η δημιουργία της μονάδας πύλης, η καταχώρηση της πύλης στο Nacos και η διαμόρφωση της δρομολόγησης για δοκιμή.
Κάντε δεξί κλικ στο έργοNew->Module
, δημιουργήστε μια νέα ενότητα, όνομα μονάδας gulimall-gateway
。
Συμπληρώστε διάφορες πληροφορίες.
Επιλέξτε Εξάρτηση πύλης.
Κάντε κλικ στο Create για να δημιουργήσετε τη μονάδα.
<dependency>
<groupId>com.atguigu.gulimall</groupId>
<artifactId>gulimall-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
Επειδή η υπηρεσία πύλης χρειάζεται επίσης να χρησιμοποιεί το κέντρο εγγραφής και το κέντρο διαμόρφωσης, απαιτεί σχετικές εξαρτήσεις πακέτων, οι οποίες αποκτώνται βασιζόμενοι στην κοινή λειτουργική μονάδα.
Με την προσθήκη σχολιασμών στην κατηγορία εκκίνησης, η υπηρεσία μπορεί να καταχωρηθεί στο κέντρο εγγραφής μετά την εκκίνηση.
@EnableDiscoveryClient
Δημιουργήστε τρία νέα αρχεία διαμόρφωσης στον κατάλογο πόρων.
① εφαρμογή.ιδιότητες
Διαμόρφωση πληροφοριών σχετικά με το κέντρο εγγραφής Nacos.
server.port=80
spring.cloud.nacos.discovery.server-addr=localhost:8848
spring.application.name=gulimall-gateway
② bootstrap.properties
Διαμόρφωση των σχετικών πληροφοριών του κέντρου διαμόρφωσης Nacos Σημειώστε ότι πρέπει να δημιουργηθεί εκ των προτέρων ένας χώρος ονομάτων στο Nacos Όλα τα αρχεία διαμόρφωσης της μονάδας πύλης είναι αποθηκευμένα σε αυτόν τον χώρο ονομάτων.
spring.application.name=gulimall-gateway
spring.cloud.nacos.config.server-addr=localhost:8848
spring.cloud.nacos.config.namespace=405d2201-d62b-4203-80c8-800e9387ad40
③ application.yml
Σε αυτό το αρχείο, γράψτε τη διαμόρφωση δρομολόγησης πύλης Δείτε την επόμενη ενότητα για λεπτομέρειες.
Σε αυτό το μέρος, λαμβάνουμε δύο πραγματικές απαιτήσεις ως παραδείγματα για να εξασκηθείτε στον τρόπο διαμόρφωσης της πύλης.
Ο ρόλος της πύλης είναι να προωθήσει τα λαμβανόμενα αιτήματα στις αντίστοιχες υπηρεσίες σύμφωνα με τους κανόνες που έχει διαμορφώσει η πύλη.
Για τη διευκόλυνση της επίδειξης, με την προϋπόθεση ότι υπάρχει τέτοια ζήτηση, όταν η ακόλουθη διεύθυνση URL εισαχθεί στο πρόγραμμα περιήγησης, το αίτημα θα προωθηθεί στο Baidu.
http://localhost/?url=baidu
Όταν η ακόλουθη διεύθυνση URL εισαχθεί στο πρόγραμμα περιήγησης, το αίτημα θα προωθηθεί στην Tencent.
http://localhost/?url=qq
Πώς να γράψετε ένα αρχείο ρυθμίσεων;
Αποθετήριο Spring Cloud GatewayΕπίσημη τεκμηρίωση, ανατρέξτε στη μορφή του.
Επειδή πρέπει να εκτελέσουμε την αντίστοιχη προώθηση με βάση τις συνθήκες του ερωτήματος στη διεύθυνση url, βρίσκουμε το έγγραφο διαμόρφωσης βεβαιώσεων του Gateway σχετικά με το ερώτημα.
Ανατρέξτε σε αυτό το έγγραφο για διαμόρφωση.
εφαρμογή.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
Εδώ ορίζονται δύο κανόνες δρομολόγησης για τη χρήση παραμέτρων ερωτήματοςurl
Η τιμή καθορίζει το URI-στόχο στο οποίο πρέπει να προωθηθεί το αίτημα.
spring.cloud.gateway.routes
: Αυτή είναι η λίστα διαμόρφωσης δρομολόγησης του Spring Cloud Gateway.
καθεroutes
Το στοιχείο ορίζει έναν κανόνα δρομολόγησης.
id
: Κάθε κανόνας δρομολόγησης απαιτεί ένα μοναδικό αναγνωριστικό για τον εντοπισμό και τη διαχείριση διαδρομών.
uri
: Όταν ο κανόνας δρομολόγησης ταιριάζει, το αίτημα θα προωθηθεί σε αυτήν τη διεύθυνση URI.εδώhttps://www.baidu.com
καιhttps://www.qq.com
Οι διευθύνσεις URL των ιστότοπων Baidu και Tencent καθορίζονται αντίστοιχα.
predicates
: Αυτή είναι η λίστα βεβαιώσεων του κανόνα δρομολόγησης που χρησιμοποιείται για να καθοριστεί εάν θα πρέπει να εφαρμοστεί αυτός ο κανόνας δρομολόγησης. Οι ισχυρισμοί είναι εκφράσεις που αξιολογούνται με βάση τα μεταδεδομένα του αιτήματος.
Query=url,baidu
: Αυτός ο ισχυρισμός υποδεικνύει ότι εάν το αίτημα περιέχει αurl
παράμετρος ερωτήματος και η τιμή της είναι ίση μεbaidu
, τότε αυτός ο κανόνας δρομολόγησης θα ενεργοποιηθεί και το αίτημα θα προωθηθεί στοhttps://www.baidu.com
。
Query=url,qq
: Ομοίως, εάν η παράμετρος ερωτήματοςurl
Η τιμή είναιqq
, το αίτημα θα προωθηθεί στοhttps://www.qq.com
。
Με αυτόν τον τρόπο, όταν η εφαρμογή σας λαμβάνει ένα μήνυμα μεurl=baidu
ήurl=qq
Όταν ζητάτε παραμέτρους ερωτήματος, το Spring Cloud Gateway θα μεταφέρει το αίτημα στον αντίστοιχο ιστότοπο σύμφωνα με τους παραπάνω κανόνες.
Επισκεφθείτε την παρακάτω διεύθυνση στο πρόγραμμα περιήγησής σας.
http://localhost/?url=baidu
Εάν έχετε την παραπάνω διεπαφή, σημαίνει ότι η διαμόρφωση της υπηρεσίας πύλης και η διαμόρφωση δρομολόγησης είναι κανονικές.
Θα αναφερθεί ένα σφάλμα κατά την εκκίνηση του 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
Ο λόγος είναι ότι η μονάδα Gateway εξαρτάται από την κοινή και η κοινή μονάδα δηλώνει την εξάρτησή της από το mybatis Το πακέτο mybatis θα αναζητήσει διαμορφώσεις που σχετίζονται με τη βάση δεδομένων κατά την εκκίνηση και το έργο Gateway δεν απαιτεί βάση δεδομένων, επομένως δεν υπάρχει σχετική διαμόρφωση. .
Η λύση είναι να πείτε στη μονάδα πύλης ότι δεν χρειάζεται να αναζητήσετε διαμορφώσεις που σχετίζονται με τη βάση δεδομένων κατά την εκκίνηση και ότι μπορείτε να εξαιρέσετε σχετικές εξαρτήσεις πακέτων δηλώνοντας στον σχολιασμό της κλάσης εκκίνησης.
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)