slim

module
v0.0.0-...-31bb6df Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 28, 2020 License: Apache-2.0

README

Slim

Slim is an AMQP-based ordered commit log (think Apache Kafka) with focus on a simple interface, keeping a small footprint, and providing decent performance.

Slim does not offer features such as TLS, replication or authentication.

Slim can be used in combination with other AMQP components such as the Apache Qpid Dispatch Router to provide TLS, authentication and load balancing across multiple instances (at the expense of ordering).

The event log can be limited by time or not at all (by size will be added).

Producers send AMQP messages to a topic. The messages are stored immutable in the commit log in the order produced.

Consumers consume events by attaching to a topic starting from the last entry or by specifying an offset. The offset is specified as a source filter "offset" on the receiver source.

Usage

slim-server -d log.db -l 127.0.0.1 -p 5672 &

slim-producer -m 10 -h 127.0.0.1 -p 5672
slim-consumer -o 5 -h 127.0.0.1 -p 5672

Building

Slim uses the Apache Qpid Proton Go bindings, which is a wrapper around a C library. To compile Slim, you must install the Apache Qpid Proton library.

To pull down dependencies:

go get github.com/mattn/go-sqlite3
go get github.com/stretchr/testify
go get github.com/qpid-proton

Then, to build:

make

TODO

  • Limit log by size

Directories

Path Synopsis
cmd
slim-consumer
* Copyright 2019, Ulf Lilleengen * License: Apache License 2.0 (see the file LICENSE or http://apache.org/licenses/LICENSE-2.0.html).
* Copyright 2019, Ulf Lilleengen * License: Apache License 2.0 (see the file LICENSE or http://apache.org/licenses/LICENSE-2.0.html).
slim-producer
* Copyright 2019, Ulf Lilleengen * License: Apache License 2.0 (see the file LICENSE or http://apache.org/licenses/LICENSE-2.0.html).
* Copyright 2019, Ulf Lilleengen * License: Apache License 2.0 (see the file LICENSE or http://apache.org/licenses/LICENSE-2.0.html).
slim-server
* Copyright 2019, Ulf Lilleengen * License: Apache License 2.0 (see the file LICENSE or http://apache.org/licenses/LICENSE-2.0.html).
* Copyright 2019, Ulf Lilleengen * License: Apache License 2.0 (see the file LICENSE or http://apache.org/licenses/LICENSE-2.0.html).
pkg
api
* Copyright 2019, Ulf Lilleengen * License: Apache License 2.0 (see the file LICENSE or http://apache.org/licenses/LICENSE-2.0.html).
* Copyright 2019, Ulf Lilleengen * License: Apache License 2.0 (see the file LICENSE or http://apache.org/licenses/LICENSE-2.0.html).
commitlog
* Copyright 2019, Ulf Lilleengen * License: Apache License 2.0 (see the file LICENSE or http://apache.org/licenses/LICENSE-2.0.html).
* Copyright 2019, Ulf Lilleengen * License: Apache License 2.0 (see the file LICENSE or http://apache.org/licenses/LICENSE-2.0.html).
datastore
* Copyright 2020, Ulf Lilleengen * License: Apache License 2.0 (see the file LICENSE or http://apache.org/licenses/LICENSE-2.0.html).
* Copyright 2020, Ulf Lilleengen * License: Apache License 2.0 (see the file LICENSE or http://apache.org/licenses/LICENSE-2.0.html).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL