Рубрики
Без рубрики

Введение в Java Microservices с помощью MSF4J

Начать строительство микрослужб на основе Java с помощью MSF4J

Автор оригинала: baeldung.

1. Обзор

В этом учебнике мы продемонстрируем развитие микросервисов с использованием системы MSF4J рамочных .

Это легкий инструмент, который обеспечивает простой способ создания широкого спектра услуг, ориентированных на высокую производительность.

2. Мейвен зависимостей

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


    org.wso2.msf4j
    msf4j-service
    2.6.0



    
        com.baeldung.msf4j.Application
    

Последняя версия msf4j-сервис можно найти на Maven Central.

Далее мы покажем три различных сценария микрослужб. Сначала минималистский пример, затем RESTful API и, наконец, образец интеграции Spring.

3. Основной проект

3.1. Простой API

Мы опубликуем простой веб-ресурс.

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

Тип возвращенного содержимого является простым текстом:

@Path("/")
public class SimpleService {

    @GET
    public String index() {
        return "Default content";
    }

    @GET
    @Path("/say/{name}")
    public String say(@PathParam("name") String name) {
        return "Hello " + name;
    }
}

И помните, что все классы и аннотации используются стандартный JAX-RS элементы, которые мы уже рассмотрели в этой статье .

3.2. Применение

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

public class Application {
    public static void main(String[] args) {
        new MicroservicesRunner()
          .deploy(new SimpleService())
          .start();
    }
}

Если мы хотим, мы можем приковать развертывание звонки здесь для запуска нескольких услуг одновременно:

new MicroservicesRunner()
  .deploy(new SimpleService())
  .deploy(new ComplexService())
  .start()

3.3. Запуск микросервиса

Для запуска микрослужбы MSF4J у нас есть несколько вариантов:

  1. На IDE работает как Java-приложение
  2. Запуск сгенерированного пакета банки

После начала, вы можете увидеть результат на http://localhost:9090 .

3.4. Конфигурация стартапов

Мы можем настроить конфигурацию во многих отношениях, просто добавив некоторые положения в код запуска.

Например, мы можем добавить любой перехватчик для запросов:

new MicroservicesRunner()
  .addInterceptor(new MetricsInterceptor())
  .deploy(new SimpleService())
  .start();

Или мы можем добавить глобальный перехватчик, например, для проверки подлинности:

new MicroservicesRunner()
  .addGlobalRequestInterceptor(newUsernamePasswordSecurityInterceptor())
  .deploy(new SimpleService())
  .start();

Или, если нам нужно управление сеансом, мы можем установить менеджера сеанса:

new MicroservicesRunner()
  .deploy(new SimpleService())
  .setSessionManager(new PersistentSessionManager()) 
  .start();

Для получения более подробной информации о каждом из этих сценариев и увидеть некоторые рабочие образцы, ознакомьтесь с данными MSF4J официальный репо GitHub .

4. Создание микрослужбы API

Мы показали самый простой из возможных примеров. Теперь перейдем к более реалистичному проекту.

На этот раз мы покажем, как создать API со всеми типичными операциями CRUD для управления хранилищем блюд.

4.1. Модель

Модель представляет собой простой POJO, представляющий еду:

public class Meal {
    private String name;
    private Float price;

    // getters and setters
}

4.2. API

Мы создаем API в качестве веб-контроллера. Используя стандартные аннотации, мы устанавливаем каждую функцию следующим образом:

  • Путь URL
  • МЕТОД HTTP: GET, POST и т.д.
  • тип содержимого @Consumes (
  • @Consumes ) выход (

Итак, давайте создадим метод для каждой стандартной операции CRUD:

@Path("/menu")
public class MenuService {

    private List meals = new ArrayList();

    @GET
    @Path("/")
    @Produces({ "application/json" })
    public Response index() {
        return Response.ok()
          .entity(meals)
          .build();
    }

    @GET
    @Path("/{id}")
    @Produces({ "application/json" })
    public Response meal(@PathParam("id") int id) {
        return Response.ok()
          .entity(meals.get(id))
          .build();
    }

    @POST
    @Path("/")
    @Consumes("application/json")
    @Produces({ "application/json" })
    public Response create(Meal meal) {
        meals.add(meal);
        return Response.ok()
          .entity(meal)
          .build();
    }

    // ... other CRUD operations
}

4.3. Особенности преобразования данных

MSF4J предлагает поддержку для различных библиотек преобразования данных таких как GSON (который приходит по умолчанию) и Джексон (через msf4j-функция зависимости). Например, мы можем использовать GSON явно:

@GET
@Path("/{id}")
@Produces({ "application/json" })
public String meal(@PathParam("id") int id) {
    Gson gson = new Gson();
    return gson.toJson(meals.get(id));
}

Проходя мимо, обратите внимание, что мы использовали фигурные скобки в обоих @Consumes и @Produces аннотация, чтобы мы могли установить более одного типа пантомимы.

4.4. Запуск микросервиса API

Мы запускаем микрослужбу так же, как и в предыдущем примере, через Применение класс, который публикует МенюСервис .

После начала, вы можете увидеть результат на http://localhost:9090/menu.

5. MSF4J и Весна

Мы также можем применить Spring в наших микросервисах на базе MSF4J , из которого мы получим его функции инъекции зависимости.

5.1. Зависимость от Maven

Для добавления поддержки Spring и Mustache нам придется добавить соответствующие зависимости к предыдущей конфигурации Maven:


    
        org.wso2.msf4j
        msf4j-spring
        2.6.1
    
    
        org.wso2.msf4j
        msf4j-mustache-template
        2.6.1
    

Последняя версия msf4j-весенний и msf4j-усы-шаблон можно найти на Maven Central.

5.2. API питания

Этот API является простой услугой, используя макет репозитория еды. Обратите внимание, как мы используем весенние аннотации для автоматической проводки и установить этот класс в качестве компонента службы Spring.

@Service
public class MealService {
 
    @Autowired
    private MealRepository mealRepository;

    public Meal find(int id) {
        return mealRepository.find(id);
    }

    public List findAll() {
        return mealRepository.findAll();
    }

    public void create(Meal meal) {
        mealRepository.create(meal);
    }
}

5.3. Контроллер

Мы объявляем контроллер в качестве компонента и Весна предоставляет услугу через автоматическую проводку. Первый метод показывает, как обслуживать шаблон Усы, а второй ресурс JSON:

@Component
@Path("/meal")
public class MealResource {

    @Autowired
    private MealService mealService;

    @GET
    @Path("/")
    public Response all() {
        Map map = Collections.singletonMap("meals", mealService.findAll());
        String html = MustacheTemplateEngine.instance()
          .render("meals.mustache", map);
        return Response.ok()
          .type(MediaType.TEXT_HTML)
          .entity(html)
          .build();
    }

    @GET
    @Path("/{id}")
    @Produces({ "application/json" })
    public Response meal(@PathParam("id") int id) {
        return Response.ok()
          .entity(mealService.find(id))
          .build();
    }

}

5.4. Основная программа

В весеннем сценарии, это, как мы получаем микрослужбы начали:

public class Application {

    public static void main(String[] args) {
        MSF4JSpringApplication.run(Application.class, args);
    }
}

После того, как начал, мы можем видеть результат http://localhost:8080/meals. Порт по умолчанию отличается в весенних проектах, но мы можем установить его в любой порт, который мы хотим.

5.5. Конфигурация фасоли

Для включения определенных настроек, включая перехватчики и управление сеансами, мы можем добавить фасоль конфигурации.

Например, этот изменяет порт по умолчанию для микрослужбы:

@Configuration
public class PortConfiguration {

    @Bean
    public HTTPTransportConfig http() {
        return new HTTPTransportConfig(9090);
    }

}

6. Заключение

В этой статье мы внедрили фреймвейс MSF4J, применяя различные сценарии для создания микрослужб на основе Java.

Существует много шума вокруг этой концепции, но некоторые теоретические предпосылки уже установлены , и MSF4J обеспечивает удобный и стандартизированный способ применения этого шаблона.

Кроме того, для дальнейшего чтения, взгляните на строительство microservices с Eclipse Microprofile , и, конечно, наше руководство по весенним микросервисам с весенней загрузки и весеннего облака .

И, наконец, все примеры здесь можно найти в репо GitHub .