TemperatureTracker
Designing
While designing your service it is useful to read designing Cloudstate services
Developing
This project has a bare-bones skeleton service ready to go, but in order to adapt and extend it it may be useful to read up on developing Cloudstate services and in particular the Java section
Building
To build, at a minimum you need to generate and process sources, particularly when using an IDE. A convenience is compile your project:
mvn compile
Running Locally
In order to run your application locally, you must run the Cloudstate proxy. The included docker-compose
file contains the configuration required to run the proxy for a locally running application. To start the proxy, run the following command from this directory:
docker-compose up -d
On Linux this requires Docker 20.10 or later (moby/moby#40007), or for the USER_FUNCTION_HOST
environment variable to be set manually.
To start the application locally, the exec-maven-plugin
is used. Use the following command:
mvn exec:java
With both the proxy and your application running, any defined endpoints should be available at http://localhost:9000
. For example, given grpcurl
:
> grpcurl -plaintext -d '{"entityId": "foo"}' localhost:9000 sample.domain.TemperatureLocationEntity/GetValue
ERROR:
Code: Unknown
Message: Unexpected entity failure
Note: The failure is to be expected if you have not yet provided an implementation of
GetValue
in your entity.
Deploying
To deploy your service, install the akkasls
CLI as documented in
Setting up a local development environment
and configure a Docker Registry to upload your docker image to.
You will need to update the akkasls.dockerImage
property in the pom.xml
and refer to
Configuring registries
for more information on how to make your docker image available to Akka Serverless.
Finally you can or use the Akka Serverless Console
to create a project and then deploy your service into the project either by using mvn deploy
,
through the akkasls
CLI or via the web interface. When using mvn deploy
, Maven will also
conveniently package and publish your docker image prior to deployment.