node-kestrel v0.0.4
Node-Kestrel
This module contains Kestrel client, producer and consumer classes.
This module is NOT a wrapper around a Memcached Client, this a wrapper around all of the available commands for Kestrel using the net library.
Installation
npm install node-kestrel
Not to be mistaken with npm install kestrel, two different modules.
Usage
Check out the examples folder
Kestrel Client
The Kestrel Client class is a wrapper around all available Kestrel commands.
new kestrelClient( options )
Creates a new instance of kestrelClient.
options is an optional object containing any default settings that you wish to override.
connectionType: kestrel.connectionType, default:ROUND_ROBINservers: string array containinghost:portdefinitions
connect()
Opens all server connections.
close()
Closes all server connections.
set(queue, value, lifetime, callback)
Send sthe Kestrel SET command
queue is the string name of the queue you wish to append to.
value is the string message that you wish to append to queue.
lifetime is an integer value to represent the TTL of the message in seconds.
callback when specified is being called once kestrel responded with STORED. No other set calls are possible until the callback has been called though.
get(queue, timeout)
Tries to get a message from queue
queue is the string name of the queue you with to retrieve from.
timeout is an integer value to represent the time in milliseconds you wish to try and wait for an item from queue.
delete(queue)
Deletes the provided queue.
queue is the string representation of the queue you wsh to delete.
flush(queue)
Flushes the provided queue
queue is the string representation of the queue you wsh to flush.
flushAll()
Flushes all the queues in the server.
version()
Returns the version number of the server
shutdown()
Tries to shutdown the server.
reload()
Tells the server to reload its configs.
stats()
Get the stats for the server.
dumpStats()
Get the stats in a more readable fashion, they are organized by queue.
monitor(queue, seconds, maxItems)
Currently NOT Implemented
confirm(queue, count)
Currently NOT Implemented
Kestrel Producer
This class is mearly a convenience class, it does not provide any extra functionality.
new kestrelProducer(queue, options)
Constructor to create a new instance of kestrelProducer.
queue is the string name of the queue you wish to work with. With a kestrelProducer you are locking yourself into a single queue (for now)
options this is the same as the options for new kestrelClient.
send(message, lifetime)
Appends a message onto the queue provided in the constructor
message string message to append to the queue
lifetime is the TTL for the message in seconds (OPTIONAL).
callback when specified is being called once kestrel responded with STORED. No other set calls are possible until the callback has been called though.
close()
Closes all server connections.
Kestrel Consumer
This is purely a convenience class.
new kestrelConsumer(queue, options)
Creates a new instance of a kestrelConsumer
queue is the string name of the queue you wish to bind to.
options same as the options passed to new kestrelClient.
get(timeout)
Tries to get a new message from the bound to queue.
timeout the timeout in seconds, how long to wait until giving up on getting.
consume(callback)
Tell the consumer to continuous consume messages 1 by 1 and calling callback on each of them.
callback is a callback that you wish to have called on each and every message that is returned by consume
stopConsuming()
It tells the server to stop consuming.
You may receive 1 extra message after this is called.
close()
Closes all open server connections.
TODO
- I need ot finish working on the
monitorandconfirmcommands, then I will probably push version0.0.1to npm. - After that I am going to work on setting up transactions for consumes. Block consumes and just improving any place where I might of messed up.
- I have not done too much testing or stress testing the module.
- If I get enough people who are using this and are interested in this module then I might even write it in C to try and get some better performance.