Description and documentation coming. The project is built on Akka, leverages Eventuate for the core artifact, and Apache Kafka v0.9.0.x in the cluster artifact.
This project is separated into a few modules you can chose from:
A Kafka Akka Extension - abstracts Kafka publisher and consumer APIs. Supports cluster data distribution and decoupling in the steam For more information and examples see continuum-kafka/README.md.
object NodeA extends App {
val system: ActorSystem = ...//manage lifecycle..
}
Use anywhere in your Akka app:
val kafka = Kafka(system)
Basic source usages
kafka log data
or
kafka.source ! SourceEvent()
Basic sink (consumers)
import com.tuplejump.continuum.ClusterProtocol.SinkEvent
class SimpleSubscriberA extends Actor {
def receive: Actor.Receive = {
case SinkEvent(_, data, _, topic,_) => process(data)
}
def process(data: Array[Byte]): Unit = { ... }
}
Start consuming data:
val receivers = List(subscriberA, subscriberB)
Kafka(system).sink(topics, receivers)
Simple CQRS pattern support. Work in progress.
Leveraging Eventuate for CRDT support and in-memory use cases in distributed systems. Work in progress.
git clone [email protected]:tuplejump/continuum.git
cd continuum
Continuum requires Scala 2.11.x and JDK 1.8. Updating soon to support JDK 1.7.
See continuum-examples/README.md for information on running the examples.
This is a WIP, very few tests are pushed yet but the standard is:
sbt test
You can run all IT tests with
sbt it:test
To run modules explicitly:
sbt core/it:test
sbt kafka/it:test
Kafka IT tests use embedded-kafka. If you are running Zookeeper and/or Kafka locally, unless they are on different ports you will need to stop them first. This lets you only run those:
sbt kafka/it:test
This is a new project and not yet published to an artifact repo. Until then you do have to build and publish the artifacts you want. For example:
sbt kafka/publish-local
- Optionally Implicit Serialization
- Configurable serialization providers
- Simplification of the Framework APIs
- Tests!
- Better types
- More config options
- Security
- Much more integration with Eventuate
- More features for Kafka
- General cleanup - this is a new project