informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Isi utama bagian ini adalah membuat modul gateway, mendaftarkan gateway ke Nacos, dan mengkonfigurasi perutean untuk pengujian.
Klik kanan pada proyek tersebutNew->Module
, buat modul baru, nama modul gulimall-gateway
。
Isi berbagai informasi.
Pilih ketergantungan Gateway.
Klik Buat untuk membuat modul.
<dependency>
<groupId>com.atguigu.gulimall</groupId>
<artifactId>gulimall-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
Karena layanan gateway juga perlu menggunakan pusat registrasi dan pusat konfigurasi, maka memerlukan dependensi paket terkait, yang diperoleh dengan mengandalkan modul umum.
Dengan menambahkan anotasi ke kelas startup, layanan dapat didaftarkan di pusat registrasi setelah startup.
@EnableDiscoveryClient
Buat tiga file konfigurasi baru di direktori sumber daya.
① aplikasi.properti
Konfigurasikan informasi terkait pusat pendaftaran Nacos.
server.port=80
spring.cloud.nacos.discovery.server-addr=localhost:8848
spring.application.name=gulimall-gateway
② bootstrap.properties
Konfigurasikan informasi yang relevan dari pusat konfigurasi Nacos. Perhatikan bahwa namespace bernama gateway harus dibuat di Nacos terlebih dahulu. Semua file konfigurasi modul gateway disimpan di namespace ini.
spring.application.name=gulimall-gateway
spring.cloud.nacos.config.server-addr=localhost:8848
spring.cloud.nacos.config.namespace=405d2201-d62b-4203-80c8-800e9387ad40
③ aplikasi.yml
Dalam file ini, tulis konfigurasi perutean gateway. Lihat bagian selanjutnya untuk detailnya.
Pada bagian ini, kami mengambil dua persyaratan aktual sebagai contoh untuk mempraktikkan cara mengkonfigurasi gateway.
Peran gateway adalah meneruskan permintaan yang diterima ke layanan terkait sesuai dengan aturan yang dikonfigurasi oleh gateway.
Demi kenyamanan demonstrasi, dengan asumsi ada permintaan seperti itu, ketika URL berikut dimasukkan di browser, permintaan tersebut akan diteruskan ke Baidu.
http://localhost/?url=baidu
Ketika URL berikut dimasukkan di browser, permintaan akan diteruskan ke Tencent.
http://localhost/?url=qq
Bagaimana cara menulis file konfigurasi?
Gerbang Awan Musim Semi GudangDokumentasi resmi, lihat formatnya.
Karena kita perlu melakukan penerusan yang sesuai berdasarkan kondisi kueri pada url, kita menemukan dokumen konfigurasi pernyataan Gateway tentang Query.
Lihat dokumen ini untuk konfigurasi.
aplikasi.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
Dua aturan perutean ditentukan di sini untuk menggunakan parameter kueriurl
Nilai menentukan URI target yang menjadi tujuan penerusan permintaan.
spring.cloud.gateway.routes
: Ini adalah daftar konfigurasi perutean Spring Cloud Gateway.
setiaproutes
Item mendefinisikan aturan perutean.
id
: Setiap aturan perutean memerlukan ID unik untuk mengidentifikasi dan mengelola rute.
uri
: Jika aturan perutean cocok, permintaan akan diteruskan ke alamat URI ini.Di Sinihttps://www.baidu.com
Danhttps://www.qq.com
URL situs web Baidu dan Tencent ditentukan masing-masing.
predicates
: Ini adalah daftar pernyataan aturan perutean yang digunakan untuk menentukan apakah aturan perutean ini harus diterapkan. Pernyataan adalah ekspresi yang dievaluasi berdasarkan metadata permintaan.
Query=url,baidu
: Pernyataan ini menunjukkan bahwa jika permintaan berisi aurl
parameter kueri, dan nilainya sama denganbaidu
, maka aturan perutean ini akan dipicu dan permintaan akan diteruskan kehttps://www.baidu.com
。
Query=url,qq
: Demikian pula jika parameter kueriurl
Nilainya adalahqq
, permintaan akan diteruskan kehttps://www.qq.com
。
Dengan cara ini, ketika aplikasi Anda menerima pesan denganurl=baidu
atauurl=qq
Saat meminta parameter kueri, Spring Cloud Gateway akan memproksi permintaan tersebut ke situs web terkait sesuai dengan aturan di atas.
Kunjungi alamat berikut di browser Anda.
http://localhost/?url=baidu
Jika Anda memiliki antarmuka di atas, berarti konfigurasi layanan gateway dan konfigurasi routing normal.
Kesalahan akan dilaporkan saat startup 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
Alasannya adalah modul Gateway bergantung pada modul umum, dan modul umum menyatakan ketergantungannya pada mybatis. Paket mybatis akan mencari konfigurasi terkait database saat startup, dan proyek Gateway tidak memerlukan database, jadi tidak ada konfigurasi yang relevan. .
Solusinya adalah memberi tahu modul gateway bahwa tidak perlu mencari konfigurasi terkait database saat startup, dan Anda dapat mengecualikan dependensi paket yang relevan dengan mendeklarasikan anotasi kelas startup.
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)