All Projects → mavenlink → changestream

mavenlink / changestream

Licence: MIT license
A stream of changes for MySQL built on Akka

Programming Languages

scala
5932 projects

Projects that are alternatives of or similar to changestream

laravel-binlog
Add mysql binlog event listening for Laravel ( 为Laravel框架添加Mysql Binlog事件监听 )
Stars: ✭ 19 (-24%)
Mutual labels:  mysql-replication, mysql-binlog
akka-persistence-gcp-datastore
akka-persistence-gcp-datastore is a journal and snapshot store plugin for akka-persistence using google cloud firestore in datastore mode.
Stars: ✭ 18 (-28%)
Mutual labels:  akka
mysql-replication
mysql replication binlog php 同步工具
Stars: ✭ 60 (+140%)
Mutual labels:  mysql-binlog
akka-pusher
Pusher meets Akka
Stars: ✭ 18 (-28%)
Mutual labels:  akka
akka-stream-mon
Throughput and latency monitoring for Akka Streams
Stars: ✭ 23 (-8%)
Mutual labels:  akka
scala-akka
OpenTracing instrumentation for Scala Akka
Stars: ✭ 16 (-36%)
Mutual labels:  akka
protoactor-python
Proto Actor - Ultra fast distributed actors
Stars: ✭ 78 (+212%)
Mutual labels:  akka
sns-laravel
A library to enable sending and receiving broadcasts to and from SNS topics in Laravel and Lumen.
Stars: ✭ 23 (-8%)
Mutual labels:  sns
akka-doc-ja
Akka Japanese Documentation
Stars: ✭ 25 (+0%)
Mutual labels:  akka
alpakka-samples
Example projects building Reactive Integrations using Alpakka
Stars: ✭ 61 (+144%)
Mutual labels:  akka
go-localstack
Go Wrapper for using localstack
Stars: ✭ 56 (+124%)
Mutual labels:  sns
akka-stream-kafka-template.g8
Template for Akka Streams & Kafka. Default impl: mirror a topic onto another one
Stars: ✭ 14 (-44%)
Mutual labels:  akka
aws-sqs-sns-client
AWS SNS SQS client UI
Stars: ✭ 26 (+4%)
Mutual labels:  sns
akka-contextual-actor
A really small library (just a few classes) which lets you trace your actors messages transparently propagating a common context together with your messages and adding the specified values to the MDC of the underlying logging framework.
Stars: ✭ 17 (-32%)
Mutual labels:  akka
akka-jwt
Library for jwt authentication with akka
Stars: ✭ 16 (-36%)
Mutual labels:  akka
EventBus
A .NET Core ultra lightweight in-memory event bus implementation.
Stars: ✭ 73 (+192%)
Mutual labels:  sns
slicebox
Microservice for safe sharing and easy access to medical images
Stars: ✭ 18 (-28%)
Mutual labels:  akka
khermes
A distributed fake data generator based in Akka.
Stars: ✭ 94 (+276%)
Mutual labels:  akka
wasp
WASP is a framework to build complex real time big data applications. It relies on a kind of Kappa/Lambda architecture mainly leveraging Kafka and Spark. If you need to ingest huge amount of heterogeneous data and analyze them through complex pipelines, this is the framework for you.
Stars: ✭ 19 (-24%)
Mutual labels:  akka
scala-zen
Scala Zen
Stars: ✭ 29 (+16%)
Mutual labels:  akka

Changestream

CircleCI codecov

Changestream sources object-level change events from a MySQL Replication Master (configured for row-based replication) by streaming the MySQL binlog and transforming change events into JSON strings that can be published anywhere.

Currently, Amazon Simple Queuing Service (SQS), Amazon Simple Notification Service and Amazon S3 are supported with optional client-side message encryption via AES.

Documentation

Getting Started

Setup

First, start MySQL with

docker-compose up db

(or, for the hard way without Docker, follow the bespoke setup instructions).

You will then have access to a MySQL instance on localhost port 3306 with a root password of "password", and Changestream configured to listen for events.

Changestream is available on Docker Hub.

Next run the dev environment

docker-compose run dev

Then build and run Changestream using the sbt CLI:

$ sbt run

Building

Docker Image (requires a docker host to build)

Note: The Dockerfile will be written to target/docker/Dockerfile, and the docker image will be added to your local docker repo.

$ sbt docker

Debian Package (requires dpkg-deb, written to target/*.deb)

$ sbt debian:packageBin

Jar Package (written to target/scala-2.11/*.jar)

$ sbt package

Local development without docker

Requirements

Contributing

Testing

Changestream is 100% unit and integration tested, with end-to-end testing on CircleCI with MySQL and Amazon SNS.

Mysql Test Config

In order to run tests locally you need to configure test.conf with a working MySQL connection configuration.

Make sure that your test user has permissions to create and drop databases and tables. By default, Changestream uses the changestream_test table for tests.

AWS Test Config

To run the integration tests, as well as the unit tests on the SqsActor and SnsActor, you also need to ensure that you have configured your AWS tokens to be available from the environment, and that your AWS tokens have access to create and add messages to queues (SQS) and create and publish to topics (SNS).

AWS_ACCESS_KEY_ID=<access_key_id>
AWS_SECRET_ACCESS_KEY=<secret_access_key>
AWS_REGION=<your_region>
AWS_S3_BUCKET=<your_bucket>
AWS_S3_KEY_PREFIX=<some_key_prefix>

Running Tests

Once that's all set up, you can either run

$ sbt test

from the command line, or run the test command in IntelliJ (with the Scala and SBT plugins installed).

ScalaStyle

Changestream uses ScalaStyle for code linting--it is not automatic. Before submitting a PR, please take a look at the output of the sbt scalastyle command and correct any issues you find.

License

Changestream is available under the MIT License.

Authors

Peter Fry (@racerpeter) and the Mavengineering team.

Inspiration

Changestream was inspired in a large part by mardambey/mypipe by Hisham Mardam-Bey. The first proof-of-concept for changestream was a fork of mypipe - thank you Hisham.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].