minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
O conteúdo principal desta seção é criar o módulo gateway, registrar o gateway no Nacos e configurar o roteamento para teste.
Clique com o botão direito no projetoNew->Module
, crie um novo módulo, nome do módulo gulimall-gateway
。
Preencha diversas informações.
Selecione Dependência de gateway.
Clique em Criar para criar o módulo.
<dependency>
<groupId>com.atguigu.gulimall</groupId>
<artifactId>gulimall-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
Como o serviço de gateway também precisa usar o centro de registro e o centro de configuração, ele requer dependências de pacotes relacionadas, que são obtidas com base no módulo comum.
Ao adicionar anotações à classe de inicialização, o serviço pode ser registrado no centro de registro após a inicialização.
@EnableDiscoveryClient
Crie três novos arquivos de configuração no diretório de recursos.
① aplicação.propriedades
Configure as informações relacionadas ao centro de registro do Nacos.
server.port=80
spring.cloud.nacos.discovery.server-addr=localhost:8848
spring.application.name=gulimall-gateway
② bootstrap.propriedades
Configure as informações relevantes do centro de configuração do Nacos. Observe que um namespace denominado gateway deve ser criado no Nacos antecipadamente.
spring.application.name=gulimall-gateway
spring.cloud.nacos.config.server-addr=localhost:8848
spring.cloud.nacos.config.namespace=405d2201-d62b-4203-80c8-800e9387ad40
③ aplicação.yml
Neste arquivo, escreva a configuração de roteamento do gateway. Consulte a próxima seção para obter detalhes.
Nesta parte, tomamos dois requisitos reais como exemplos para praticar como configurar o gateway.
A função do gateway é encaminhar as solicitações recebidas aos serviços correspondentes de acordo com as regras configuradas pelo gateway.
Para comodidade de demonstração, supondo que haja tal demanda, ao inserir a seguinte URL no navegador, a solicitação será encaminhada para o Baidu.
http://localhost/?url=baidu
Quando o seguinte URL for inserido no navegador, a solicitação será encaminhada para a Tencent.
http://localhost/?url=qq
Como escrever um arquivo de configuração?
Repositório Spring Cloud GatewayDocumentação oficial, consulte seu formato.
Como precisamos realizar o encaminhamento correspondente com base nas condições de consulta na URL, encontramos o documento de configuração de asserção do Gateway sobre Consulta.
Consulte este documento para configuração.
aplicação.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
Duas regras de roteamento são definidas aqui para usar parâmetros de consultaurl
O valor determina o URI de destino para o qual a solicitação deve ser encaminhada.
spring.cloud.gateway.routes
: Esta é a lista de configuração de roteamento do Spring Cloud Gateway.
cadaroutes
O item define uma regra de roteamento.
id
: cada regra de roteamento requer um ID exclusivo para identificar e gerenciar rotas.
uri
: quando a regra de roteamento corresponder, a solicitação será encaminhada para este endereço URI.aquihttps://www.baidu.com
ehttps://www.qq.com
Os URLs dos sites Baidu e Tencent são especificados respectivamente.
predicates
: esta é a lista de asserções da regra de roteamento usada para determinar se esta regra de roteamento deve ser aplicada. Asserções são expressões avaliadas com base nos metadados da solicitação.
Query=url,baidu
: Esta afirmação indica que se a solicitação contém umurl
parâmetro de consulta e seu valor é igual abaidu
, então esta regra de roteamento será acionada e a solicitação será encaminhada parahttps://www.baidu.com
。
Query=url,qq
: Da mesma forma, se o parâmetro de consultaurl
O valor éqq
, a solicitação será encaminhada parahttps://www.qq.com
。
Dessa forma, quando sua aplicação receber uma mensagem comurl=baidu
ouurl=qq
Ao solicitar parâmetros de consulta, o Spring Cloud Gateway fará o proxy da solicitação para o site correspondente de acordo com as regras acima.
Visite o seguinte endereço em seu navegador.
http://localhost/?url=baidu
Se você tiver a interface acima, significa que a configuração do serviço de gateway e a configuração de roteamento estão normais.
Um erro será relatado durante a inicialização do 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
A razão é que o módulo Gateway depende do comum, e o módulo comum declara sua dependência do mybatis. O pacote mybatis procurará configurações relacionadas ao banco de dados na inicialização, e o projeto Gateway não requer um banco de dados, portanto não há configuração relevante. .
A solução é informar ao módulo gateway que não há necessidade de procurar configurações relacionadas ao banco de dados na inicialização e que você pode excluir dependências de pacotes relevantes declarando-as na anotação da classe de inicialização.
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)