0.2.1 • Published 8 years ago

qool v0.2.1

Weekly downloads
1
License
MIT
Repository
github
Last release
8 years ago

qool

a leveldb backed Queue

npm status

  • durable
  • strict FIFO ordering
  • dequeus with timeouts (called lease())
  • embeddable

Example

Simple

const Qool = require('qool')
const level = require('level-bytewise')

const db = level('db')
const queue = Qool.create(db)

queue.enqueue('a')
queue.enqueue('b', (err) => {})

queue.dequeue()
queue.dequeue((err, value) => {})
notes

Enqueue and Dequeue are batched under the hood, so callbacks are invoked synchronously. This means that you can only include a last callback and forgo all the others for Enqueues and Dequeues that happen in the same tick

Lease

const Qool = require('qool')
const level = require('level-bytewise')

const db = level('db')
const queue = Qool.create(db, 1000 * 10)

queue.enqueue('a')
queue.enqueue('b', (err) => {})

queue.lease((err, leaseKey, value) => {
    // do something with the data

    // delete the item permanently from the queue
    queue.delete(leaseKey, (err) => {

    })
})

// TBD
// lease with a non default timeout
//queue.leaseWithTimeout(1000 * 2, (err, leaseKey, value) => {})

Peek

const Qool = require('qool')
const level = require('level-bytewise')

const db = level('db')
const queue = Qool.create(db)

queue.enqueue('a')
queue.enqueue('b', (err) => {})

queue.peek((err, value) => {
    // value === 'a'
})

queue.peekMany((err, results) => {
    // results === [{ key: ..., value: 'a' }, { key: ..., value: 'b' }]
})

Some ramblings on internal design are here

license

TODO

  • enhance tests
  • implement length property
  • should we have a version of dequeue that "waits" if the queue is empty
  • expiry for enqueued items

MIT © yaniv kessler

0.2.1

8 years ago

0.2.0

8 years ago

0.1.0

8 years ago

0.0.11

8 years ago

0.0.10

8 years ago

0.0.9

8 years ago

0.0.8

8 years ago

0.0.7

8 years ago

0.0.6

8 years ago

0.0.4

8 years ago

0.0.3

8 years ago

0.0.2

8 years ago