Compartilhamento de tecnologia

Notas de estudo do Grain Mall-22-Componentes distribuídos-SpringCloud-OpenFeign Test Chamada remota

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


Aprendemos sobre o centro de registro na seção anterior. Sabemos que antes do servidor A chamar o servidor B, ele obterá o IP do serviço B do centro de registro e então o servidor A fará uma solicitação ao serviço B.

Então, como o servidor A faz uma solicitação ao serviço B?

Esta é a principal questão a ser abordada nesta seção.

Neste projeto, o componente OpenFeign é usado para completar chamadas entre serviços. OpenFeign é um encapsulamento de solicitações HTTP.

1. Introdução ao OpenFeign

OpenFeign é um cliente HTTP declarativo cujo objetivo é facilitar chamadas remotas.

Feign fornece um modelo para solicitações HTTP. Ao escrever uma interface simples e inserir anotações, você pode definir os parâmetros, formato, endereço e outras informações da solicitação HTTP.

Feign integra Ribbon (balanceamento de carga) e Hystrix (interrupção de serviço), para que não precisemos mais usar esses dois componentes explicitamente.

SpringCloudFeign estende suporte para anotações SpringMVC baseadas em NetflixFeign. Em sua implementação, precisamos apenas criar uma interface e configurá-la usando anotações para completar a ligação da interface ao provedor de serviços. Simplificou o desenvolvimento do cliente de chamada de serviço autoencapsulado do SpringCloudRibbon.

2. Passos para usar OpenFeign

1. Descrição da cena

Usamos um problema baseado em cenário para aprender o uso do OpenFeign, assumindo会员服务Chamar优惠券服务Uma interface que retorna informações de cupons do membro que podem ser usadas.

A interface deste cupom é a seguinte. Esta é uma interface para teste e não possui lógica de negócios real.
Insira a descrição da imagem aqui

	@RequestMapping("member/list")
    public R list(){
        CouponEntity couponEntity = new CouponEntity();
        couponEntity.setCouponName("慢100减80");

        return R.ok().put("page", Arrays.asList(couponEntity));
    }