-
install cql-tx module
npm install cql-tx
-
Go to cql-tx folder under node_modules folder update config.js file for logging path and cassandra configurations.
var config = {
restPort : 8080,
websocketPort : 8081,
trxClearanceIntervalInMins : 10,
keyspace : 'mykeyspace',
cassandraClient : {contactPoints: ['127.0.0.1'], keyspace: 'mykeyspace'},
timezone : '+0300',
winstonTransports : function(winston){
return [
new winston.transports.File({
level: 'debug',
filename: '/data/cqltx/logs/all-logs.log',
handleExceptions: true,
json: true,
maxsize: 5242880, //5MB
maxFiles: 5,
colorize: false
}),
new winston.transports.Console({
level: 'debug',
handleExceptions: true,
json: false,
colorize: true
})
];
}
}
- For transaction tables , execute init.js ;
node init.js
- Start cql-tx (rest server will start listening 8080 port , defined on config js) ;
npm start cql-tx
- For testing create the following user table ;
create table users(fname text,lname text,user_id bigint,primary key (user_id));
- open a transaction by the following curl command ;
curl -H "Content-Type: application/json" -X POST -d '{"commandType" : "openTransaction" }' http://localhost:8080/cqltx
- exeute the cql (change the transaction id with the value that's returned by open-transaction);
curl -H "Content-Type: application/json" -X POST -d '{"commandType" : "execute", "txId" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx" ,"cql":"insert into users(user_id) values(64222)" }' http://localhost:8080/cqltx
-
check the user table , if the "64222" entry exists or not.
-
commit the transaction ;
curl -H "Content-Type: application/json" -X POST -d '{"commandType" : "commitTransaction", "txId" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx" }' http://localhost:8080/cqltx
- or rollback;
curl -H "Content-Type: application/json" -X POST -d '{"commandType" : "rollbackTransaction", "txId" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx" }' http://localhost:8080/cqltx
You can use java restful interface driver cqltx-rest-driver instead of curl.(download cqltx-rest-driver)
...
// cql-tx rest server address
CqlSessionFactory factory = new CqlSessionFactory(new URL("http://localhost:8080/cqltx"));
//create new session
CqlSession session = factory.createNewSession();
session.execute("insert into grouped_users(user_id,fname,lname, group,age) values(7004,'test1','test2','engineering',21)");
//commit the session
session.commit();
Created with Nodeclipse (Eclipse Marketplace, site)
Nodeclipse is free open-source project that grows with your contributions.