aedes-persistence-cassandra

0.2.1 • Public • Published

aedes-persistence-cassandra

Aedes persistence, backed by Cassandra.

See aedes-persistence for the full API, and Aedes for usage.

Disclaimer

Be sure to understand applicability and limitations before using this package in production.

In most cases aedes-persistence-mongodb should be considered a better alternative to this.

Please understand that Cassandra is not suited for implementing queues as in most cases this results in reading lots of tombstones (cassandra-anti-patterns-queues-and-queue-datasets).

This package is suitable when:

  • You have a small sets of subscriptions with low traffic
  • You already have a deployed Cassandra cluster and can't afford to deploy another persistence solution (e.g. MongoDB or Redis)
  • You are regularly performing compactions/repair on the used keyspace

Install

npm install aedes aedes-persistence-cassandra --save

or

yarn add mqemitter-kafka aedes-persistence-cassandra

Target keyspace must be initialized with aedes.cql script.

API

AedesPersistenceCassandra([opts])

Creates a new instance of aedes-persistence-cassandra.

Options

  • ttl: Used to set a ttl (time to live) to documents stored in collections
    • packets: Could be an integer value that specify the ttl in seconds of all packets collections or an Object that specifies for each collection its ttl in seconds. Packets collections are: incoming, outgoing, retained, will.
    • susbscriptions: Set a ttl (in seconds)
  • cassandra: Extra options to pass to Cassandra driver (see cassandra-driver) (alternative to client)
  • client: Existing cassandra-driver client instance (alternative to cassandra)

If neither cassandra or client option are supplied, connection to localhost:9042 will be attempted with local datacenter datacenter1 and keyspace aedes.

Supplying an external client it's recommended.

Examples

const AedesPersistenceCassandra = require("aedes-persistence-cassandra");

AedesPersistenceCassandra({
  cassandra: { 
    contactPoints: ["localhost:9042"],
    localDataCenter: "datacenter1",
    keyspace: "aedes"
  },
  // Optional ttl settings
  ttl: {
      packets: 300, // Number of seconds
      subscriptions: 300,
  }
})

With the previous configuration all packets will have a ttl of 300 seconds. You can also provide different ttl settings for each packet type:

ttl: {
      packets: {
        incoming: 100,
        outgoing: 100,
        will: 300,
        retained: -1
      }, // Number of seconds
      subscriptions: 300,
}

If you want a specific packet type to be persistent just set corresponding ttl to null or undefined.

Acknowledgements

Implementation inspired after aedes-persistence-mongodb.

License

MIT

Package Sidebar

Install

npm i aedes-persistence-cassandra

Weekly Downloads

8

Version

0.2.1

License

MIT

Unpacked Size

29.7 kB

Total Files

8

Last publish

Collaborators

  • uwburn