Skip to content
Anton Kropp edited this page Nov 3, 2016 · 11 revisions

What is CassieQ?

CassieQ is a distributed queue built on cassandra. CassieQ leverages lightweight transactions and message bucketing to avoid issues with queues modeled off deletes.

CassieQ provides:

  • At least once delivery
    • You may get a message more than once. It is important for the client consumer to be able to handle this scenario
  • Invisiblity of messages
    • When a message is consumed, you can say how long it should not be re-visible for. When it becomes revisible (after that time) it can be redelivered to another consumer. You can also specify initial invisibility when putting messages in, so they won't be available for a consumer until that time.
  • Simple API
    • A simple REST api. Java client available
  • Highly scaleable due to backing of cassandra
  • Durable
    • If the API accepts a message, it is persisted and will not be lost.
  • Secured with granularty by account and specific actions
  • Queue statistics (via graphite)
    • The only native stat is queue size, however granular metrics regarding consume/ack/publish rates are all published as graphite metrics
  • DLQ support
    • DLQ's can be chained for more complex topologies
  • Max message delivery
    • Avoid poison messages with max delivery counts
  • Simple deployment with docker

Why make a queue on cassandra?

Cassandra is a great datastore that is massively horizontally scaleable. It also exists at a lot of organizations already. Being able to use a horizontally scaleable data store means you can ingest incredible amounts of messages.

Also by providing a simple docker container that houses an REST web api, you can scale out the queue by tossing more docker instances at your cassandra queue.

CassieQ is fully encapsulated and only needs to know your cassandra information.

For more information please see the side bar

Presentations

Check out this presentation of cassieq at the 2016 Cassandra Summit

Clone this wiki locally