Skip to content
bboltqueue: A Queue Structure for boltdb
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
doc.go doc clarification May 1, 2015


Documentation Build Status Report Card

import ""

Package boltqueue provides a persistent queue or priority queue based on boltdb.

Based on boltqueue.

Priority Queue

boltqueue's PQueue type represents a priority queue. Messages may be inserted into the queue at a numeric priority between 0(highest) and 255(lowest). Messages are dequeued following priority order, then time ordering, with the oldest messages of the highest priority emerging first.


  • Go v1.7 or newer


type Message

type Message struct {

Message represents a message in the priority queue

func NewMessage

func NewMessage(value string) *Message

NewMessage generates a new priority queue message

func NewMessageB

func NewMessageB(value []byte) *Message

NewMessageB generates a new priority queue message from a byte slice

func (*Message) Priority

func (m *Message) Priority() int

Priority returns the priority the message had in the queue in the range of 0-255 or -1 if the message is new.

func (*Message) ToString

func (m *Message) ToString() string

ToString outputs the string representation of the message's value

type PQueue

type PQueue struct {

PQueue is a priority queue backed by a Bolt database on disk

func NewPQueue

func NewPQueue(db *bolt.DB) (*PQueue, error)

NewPQueue uses an already open *bolt.DB

func NewPQueueFromFile

func NewPQueueFromFile(filename string) (*PQueue, error)

NewPQueueFromFile loads or creates a new PQueue with the given filename

func (*PQueue) Close

func (b *PQueue) Close() error

Close closes the queue and releases all resources

func (*PQueue) Dequeue

func (b *PQueue) Dequeue(topic string) (*Message, error)

Dequeue removes the oldest, highest priority message from the queue of the named topic and returns it

func (*PQueue) Enqueue

func (b *PQueue) Enqueue(topic string, priority int, message *Message) error

Enqueue adds a message to the queue filed under the specified topic

func (*PQueue) Scan

func (b *PQueue) Scan(topic string, fn func(m *Message)

Invokes the supplied callback function on each message for the named topic.

func (*PQueue) ScanWithBreak

func (b *PQueue) ScanWithBreak(topic string, fn func(m *Message)

Invokes the supplied callback function on each message for the named topic until the callback returns false.

func (*PQueue) Requeue

func (b *PQueue) Requeue(topic string, priority int, message *Message) error

Requeue adds a message back into the topic queue, keeping its precedence. If added at the same priority, it should be among the first to dequeue. If added at a different priority, it will dequeue before newer messages of that priority.

func (*PQueue) Size

func (b *PQueue) Size(topic string, priority int) (int, error)

Size returns the number of entries of a given priority from 1 to 5

You can’t perform that action at this time.