Микросервисы и облачная конфигурация с использованием Spring Boot

Теперь, когда у нас есть config-server, eureka-server-registry и репозиторий github конфигурация.репозиторий для конфигураций мы можем приступить к созданию первого микросервиса, этот микросервис будет обрабатывать данные клиентов. Как и в предыдущем проекте, нам нужно создать новый проект из start.spring.io со следующими зависимостями:

  • База данных H2
  • Весенняя сеть
  • Клиент конфигурации
  • Спринг-данные JPA
  • Эврика клиент

С предыдущими зависимостями мы можем создать необходимые конечные точки REST:

POST /customers
GET  /customers

У этого микросервиса будет конечная точка для создания нового клиента и вторая конечная точка для получения всех созданных клиентов.

Git-репозиторий

если вы хотите проверить результаты, вот репозиторий
клиент-мс

Доступ к серверу конфигурации

Первое, что нам нужно сделать, это подключить микросервис к серверу конфигурации и получить конфигурации, когда микросервисы создают контекст приложения, для этого добавим следующие строки в bootstrap.yml:

spring:
  application:
    name: customer
  cloud:
    config:
      uri: 

Необходимо установить следующие свойства: spring.application.name а также spring.cloud.config.uriпервый в данном случае это имя файла из ветки master в репозитории git, а второй — расположение сервера конфигурации spring, помните, что мы используем 8081 порт.
Это все настройки, которые нам нужны на данный момент, вы можете, например, указать конкретную ветку в репозитории git, чтобы узнать больше о конфигурации, которую вы можете просмотреть в документации Spring.

Включить эврика-клиент

Добавим новые записи в файл customer.yml находится в главной ветке репозитория git

eureka:
  client:
    eureka-server-u-r-l-context: 
    service-url:
      defaultZone: 

Теперь микросервис будет подключаться к реестру сервера eureka,
Я добавил следующую запись:

application:
  welcome:
    message: This is an example

мы собираемся показать это сообщение в журнале, когда мы создаем нового клиента.

Создание конечной точки клиентов

1.- Создайте объект Java для сохранения нового клиента со свойствами: id, name

//Customer.java
@Entity
@Table(name="customer")
public class Customer {
    @Id
    private String uuid;
    private String name;
  // getter and setter methods
}

2.- Создайте новый репозиторий

public interface CustomerRepository extends
        JpaRepository<Customer, String> {
}

3.- Создайте контроллер с @PostMapping а также @GetMapping
В следующем фрагменте кода мы видим свойство helloMessage который будет введен из репозитория git и показан в журнале приложения

@RestController
@RequestMapping("/customers")
public class CustomerController {

    private CustomerRepository customerRepository;

    @Value("${application.welcome.message}")
    private String helloMessage;

    private final Logger log = LoggerFactory.getLogger(CustomerController.class);

    public CustomerController(CustomerRepository customerRepository) {
        this.customerRepository = customerRepository;
    }

    @PostMapping
    public HttpEntity<Customer> createCustomer(
            @RequestBody Customer customer
    ){
        log.info(helloMessage);
        this.customerRepository.saveAndFlush(customer);
        return new ResponseEntity<>(customer, HttpStatus.OK);
    }

    @GetMapping
    public HttpEntity<List<Customer>> findAll() {
        log.info(helloMessage);
        return new ResponseEntity<>(this.customerRepository.findAll(),
                HttpStatus.OK);
    }
}

Тестовое приложение

Чтобы протестировать микросервис, вы должны запустить все весенние приложения: конфигурацию сервера, сервер eureka и клиентский микросервис.
Вот шаги для создания контекста приложения:
1.- Подключитесь к конфигурации сервера spring и извлеките конфигурации, используя: application name а также spring cloud config uri
uno.png
2.- На основе конфигураций сервер Spring вернет конфигурации из

2019-09-27 20:24:32 INFO  o.s.c.c.c.ConfigServicePropertySourceLocator:151 - Located environment: name=customer, profiles=[default], label=null, version=d81dfaf847f8341cf09d45397f1998adede6eca5, state=null
2019-09-27 20:24:32 INFO  o.s.c.b.c.PropertySourceBootstrapConfiguration:101 - Located property source: CompositePropertySource {name="configService", propertySources=[MapPropertySource {name="configClient"}, MapPropertySource {name=""}]}

3.- Конфигурации для port, eureka, application.welcome.message а также database будет использоваться IOC для создания и внедрения необходимых объектов.
4.- Приложение будет зарегистрировано на сервере eureka.

2019-09-27 20:24:41 INFO  o.s.c.n.e.s.EurekaServiceRegistry:41 - Registering application CUSTOMER with eureka with status UP
2019-09-27 20:24:41 INFO  c.n.d.DiscoveryClient:844 - DiscoveryClient_CUSTOMER/192.168.8.105:customer:8083: registering service...
2019-09-27 20:24:41 INFO  c.n.d.DiscoveryClient:853 - DiscoveryClient_CUSTOMER/192.168.8.105:customer:8083 - registration status: 204

И если вы перейдете к экземпляру eureka:
эврика.png
Как видите, наше приложение указано в экземпляре, перерегистрированном с IP-адресом и локальным портом, это будет использоваться шлюзом для перенаправления трафика в микросервис.

Теперь я попаду в конечные точки

конечная точка POST

сообщение.png

ПОЛУЧИТЬ конечную точку

получить.png

и журнал каждый раз, когда конечные точки попадают
![log.png](

Наконец, мы используем микросервисную архитектуру: config server, eureka server, centralized configuration и customer serviceа gateway будут созданы в будущем.

Спасибо за прочтение и, пожалуйста, напишите отзыв

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *