aedes-persistence-cassandra
v0.2.1
Published
Cassandra persistence for Aedes
Downloads
5
Maintainers
Readme
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 collectionspackets
: 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 toclient
)client
: Existingcassandra-driver
client instance (alternative tocassandra
)
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