lagom-pb = lagom + protocol buffer

Build Status Codacy Badge License Maven Central Snapshot Artifacts Join the chat at https://gitter.im/super-flat/lagom-pb

Scala Developer velocity in lagom development using protocol buffer.

This library helps write lagom microservices easily by making use of protocol buffer messages to define the es/cqrs core components like api requests/responses, grpc services, events, commands and state.

Features

  • Implementation of an HTTP/Json based microservice using REST interfaces by defining api requests and responses as protobuf messages.

  • Implementation of a gRPC based microservice using protocol buffer messages. More info: gRPC.

  • ReadSide in-built battery via (Akka Projection).

  • Easy definition of aggregate root, events and command handlers.

  • Pure testable functions for events and commands handlers.

  • Easy definition of api service descriptors.

  • Easy implementation of api service either with message broker api or without.

  • Metadata adds some revision number that can help easily implement optimistic lock.

  • At every event handled a snapshot of the aggregate state with the metadata are made available for the readSide.

  • All events, snapshots and readSide offsets are persisted to Postgres SQL.

  • Encryption trait to enable events and snapshots encryption.

Documentation

Documentation is available at lagom-pb wiki at the moment.

Sample Project

There is a demo application built on top the library that can be found here Sample

License

This software is licensed under the Apache 2 license, quoted below.

Copyright © 2020 superflat

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

[http://www.apache.org/licenses/LICENSE-2.0] Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an " AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.