java-tutorials/microservices-modules/lagom
anuragkumawat 2096eac575 JAVA-29231 Move modules inside existing container modules (#15492) 2024-01-01 21:27:05 +02:00
..
greeting-api/src/main
greeting-impl/src/main/resources
project
weather-api/src/main
weather-impl/src/main
.gitignore
README.md
build.sbt

README.md

Lagom

This module contains articles about the Lagom framework.

Relevant articles

Steps to setup from scratch

  1. Create sbt build file "build.sbt"

  2. Create plugins file project/plugins.sbt

  3. Create build properties file project/build.properties

  4. Run sbt command from project root to generate project directories, generated projects at target/lagom-dynamic-projects Service Locator project: lagom-internal-meta-project-service-locator cassandra project: lagom-internal-meta-project-cassandra

  5. Create folders in all projects to follow maven like directory structure layout for project source code: src/main/java and src/main/java/resources and test folders.

  6. Weather microservice a) WeatherService Interface with method: weatherStatsForToday() b) WeatherServiceImpl to return weatherstats from a random list of weather stats

  7. Greeting Microservice GreetingService Interface: handleGreetFrom(String user)

    a) Reply back to user with greeting message("Hello") along with weather stats fetched from weather microservice b) Update the greeting message("Hello Again") for an existing user.

  8. GreetingEntity: PersistentEntity<GreetingCommand, GreetingEvent, GreetingState> a) handles ReceivedGreetingCommand b) Stores ReceivedGreetingEvent events to cassandra c) Processes ReceivedGreetingEvent to update GreetingState("Hello" to "Hello Again") if required.

  9. Register modules with lagom using application.conf files.

  10. Run project: sbt lagom:runAll

Sample Run:

$ curl http://localhost:9000/api/greeting/Nikhil;
Hello Nikhil! Today's weather stats: Going to be very humid, Take Water

$ curl http://localhost:9000/api/greeting/Nikhil;
Hello Again Nikhil! Today's weather stats: Going to Rain, Take Umbrella