- Java 11
- Apache Maven 3.6 or higher
- Akka Serverless:
- Register account: Login, Register, Register via Google
akkasls
tool installed: Akka Serverless CLIakkasls
login- project
demo
created and set forakkasls
- Docker 20.10.8 or higher (engine and client)
- Docker Hub account (configured with Docker)
Access to thegcr.io/akkaserverless-public
container registry
cURL
IDE / editor
mvn archetype:generate \
-DarchetypeGroupId=com.akkaserverless \
-DarchetypeArtifactId=akkaserverless-maven-archetype \
-DarchetypeVersion=0.10.6
Define value for property 'groupId': io.as
Define value for property 'artifactId': loan-application
Define value for property 'version' 1.0-SNAPSHOT: :
Define value for property 'package' com.example: : io.as.loanapp
Delete:
src/main/proto/io/as/loanapp/counter_api.proto
src/main/proto/io/as/loanapp/domain/counter_domain.proto
Note: For code snippet insertion use command+J (MAC)
- Create file
loan_app_api.proto
insrc/main/proto/io/as/loanapp
folder. - Edit
src/main/proto/io/as/loanapp/loan_app_api.proto
in IDE - Insert header snippet:
aheader
- Insert commands snippet:
acmd
- Insert state snippet:
astate
- Insert service snippet:
asrv
- Add functions to service snippet (place cursor inside brackets
service LoanAppService { }
):afunc
- Create file
loan_app_domain.proto
insrc/main/proto/io/as/loanapp/domain
folder. - Edit
src/main/proto/io/as/loanapp/domain/loan_app_domain.proto
in IDE - Insert header snippet:
dheader
- Insert events snippet:
devts
- Insert state snippet:
dstate
- Edit
src/main/proto/io/as/loanapp/loan_app_api.proto
- Insert codegen annotations (place cursor under
service LoanAppService {
):acodegen
- Code generation (terminal):
mvn compile
- Refresh project (IDE)
- Trigger Maven sync (IDE)
- Edit
src/main/java/io/as/loanapp/domain/LoanAppEntity
class - Delete class body
- Insert code snippet (delete everything under constructor):
eall
- Edit
src/test/java/io/as/loanapp/domain/LoanAppEntityTest
class - Delete class body
- Insert code snippet:
ut
mvn test
- Edit
src/it/java/io/as/loanapp/LoanAppEntityIntegrationTest
class - Delete everything under the constructor
- Insert code snippet:
it
mvn -Pit verify
??
- Edit
pom.xml
and updatemy-docker-repo
in<dockerImage>my-docker-repo/${project.artifactId}</dockerImage>
- Execute in terminal:
mvn package
- Push docker image to repository:
mvn docker:push
- Deploy project:
akkasls service deploy loan-application aklikic/loan-application:1.0-SNAPSHOT
Note: replace aklikic
as in Package
2. Expose service:
akkasls services expose loan-application
- List routes:
akkasls routes list
NAME HOSTNAME PATHS CORS ENABLED STATUS
loan-application fragrant-mud-9702.us-east1.akkaserverless.app /->loan-application false NotConfigured
Note: HOSTNAME is dedicated hostname for this service and is publicly accessible on Internet
- Submit loan application
curl -XPOST -d '{
"client_id": "1111",
"client_monthly_income_cents": 60000,
"loan_amount_cents": 20000,
"loan_duration_months": 12
}' https://fragrant-mud-9702.us-east1.akkaserverless.app/loanapp/123456 -H "Content-Type: application/json"
- Get loan application:
curl -XGET https://fragrant-mud-9702.us-east1.akkaserverless.app/loanapp/123456 -H "Content-Type: application/json"
- Approve:
curl -XPUT https://fragrant-mud-9702.us-east1.akkaserverless.app/loanapp/123456/approve -H "Content-Type: application/json"
-
Create file
loan_app_topic.proto
insrc/main/proto/io/as/loanapp
folder. -
Edit
src/main/proto/io/as/loanapp/loan_app_topic.proto
in IDE -
Insert header snippet:
dheader
-
Insert events snippet:
devts
-
Insert service snippet:
dsrv
-
Insert functions snippet (place cursor inside brackets
service LoanAppToTopic { }
):dfunc
-
Code generation (terminal):
mvn compile
- Refresh project (IDE)
- Trigger Maven sync (IDE)
- Edit
src/main/java/io/as/loanapp/LoanAppToTopicAction
class - Delete class body
- Insert code snippet:
tall
mvn archetype:generate \
-DarchetypeGroupId=com.akkaserverless \
-DarchetypeArtifactId=akkaserverless-maven-archetype \
-DarchetypeVersion=0.10.6
io.as
loan-application
io.as.loanapp
loan_app_api.proto
loan_app_domain.proto
mvn compile
mvn test
mvn -Pit verify
mvn package
mvn docker:push
akkasls service deploy loan-application aklikic/loan-application:1.0-SNAPSHOT
curl -XPOST -d '{
"client_id": "1111",
"client_monthly_income_cents": 60000,
"loan_amount_cents": 20000,
"loan_duration_months": 12
}' https://fragrant-mud-9702.us-east1.akkaserverless.app/loanapp/1234567 -H "Content-Type: application/json"
curl -XGET https://fragrant-mud-9702.us-east1.akkaserverless.app/loanapp/1234567 -H "Content-Type: application/json"
curl -XPUT https://fragrant-mud-9702.us-east1.akkaserverless.app/loanapp/1234567/approve -H "Content-Type: application/json"
loan_app_topic.proto