Разделение микросервисов в Lagom

Lagom по умолчанию создает два модуля для каждого микросервиса — API и реализацию.

Можно ли разделить один микросервис на 3+ модуля?


person user3285241    schedule 13.11.2017    source источник


Ответы (1)


Абсолютно. Вы должны сделать это так же, как и с любым другим проектом Java или Scala: создать подпроект, который является внутренней библиотекой, включенной в ваш сервис.

В качестве примера посмотрите на пример проекта Lagom онлайн-аукциона Java. В частности, подпроекты security и tools. Они включаются в другие услуги с помощью метода sbt dependsOn в build.sbt.

Например:

lazy val itemApi = (project in file("item-api"))
  .settings(commonSettings: _*)
  .settings(
    version := "1.0-SNAPSHOT",
    libraryDependencies ++= Seq(
      lagomJavadslApi,
      lombok
    )
  )
  .dependsOn(security, tools)

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

person Tim Moore    schedule 14.11.2017
comment
Что если я хочу разделить реализацию на две части, например, item-impl и item-impl2? Это возможно? Если да, то есть ли смысл? - person user3285241; 28.12.2017
comment
Я не уверен, что это имеет смысл. Чего вы пытаетесь достичь? - person Tim Moore; 02.01.2018
comment
Человек, стоящий за этой идеей, хочет разделить реализацию на две части, поэтому он хотел бы знать, возможно ли разделить ее таким образом. - person user3285241; 02.01.2018
comment
Будут ли две части работать как две отдельные службы? - person Tim Moore; 03.01.2018
comment
Нет. они будут работать вместе, как и item-api и item-impl. - person user3285241; 03.01.2018
comment
Один проект будет службой, а другой — библиотекой, которую использует другая служба, как описано выше. Это очень похоже на любое веб-приложение Java: один проект будет развертываемым военным файлом, а другие проекты будут подтягиваться в качестве зависимостей по мере необходимости. - person Tim Moore; 03.01.2018