Skip to content

Latest commit

 

History

1,367 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Spine Delivery

This repository provides a reusable gRPC-based Inbox delivery service and configuration client and a complementary application for Spine-based apps.

What is this project about?

Delivery Server is an application that is deployed on a separate from the main application server, and serves as a remote ShardedWorkRegistry and Inbox storage. Delivery Server communicates with the main application nodes through the gRPC protocol.

This functionality is provided by the server application.

For more detailed information about the server's implementation please refer to the server readme file.

Applications

This repository contains several runnable applications:

  1. server — the Delivery Server application itself. It serves the shard registry and the Inbox storage to the nodes of a Spine-based application. Implemented as a plain gRPC server — without Spine inside — with in-memory, Redis, or Hazelcast storage. See the module documentation for the exposed ports, storage modes, and other configuration options.

  2. admin-server — the maintenance and administration tool for running Delivery Server instances, showing the status of their shards. It obtains the status information by connecting to a Delivery Server as a gRPC client, and serves it over HTTP.

  3. deployment / cloud-run — the application that starts the server inside a Docker container. The Launcher is responsible for starting the Delivery Server.

Distribution

The server is distributed as a Docker image hosted on the public Google Artifact Registry:

docker pull europe-docker.pkg.dev/spine-event-engine/containers/delivery-server:latest

Every push to master publishes a new image for amd64 and arm64, tagged latest, v<version>, and the commit SHA, full and short. There is a Terraform module that automates the deployment of the containers to the GCE instance. All the configuration parameters that are available for the servers also may be set through the Terraform module configuration.

The libraries are published as Maven artifacts under the io.spine.delivery group. They are served from the Spine Maven repository, which needs no credentials to read:

repositories {
    maven("https://europe-maven.pkg.dev/spine-event-engine/releases")
}

dependencies {
    // The client talking to a running Delivery Server over gRPC.
    implementation("io.spine.delivery:spine-delivery-client:$version")

    // The interfaces the client is built upon.
    implementation("io.spine.delivery:spine-delivery-client-base:$version")

    // The Protobuf domain model shared by the server and the clients.
    implementation("io.spine.delivery:spine-delivery-model:$version")

    // The Delivery Server itself, for launching it from an application.
    implementation("io.spine.delivery:spine-delivery-server:$version")
}

The exact version to use is the one listed in version.gradle.kts.

About

gRPC services providing sharded message delivery for Spine-based applications

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages