1
0
Fork 0
Specialized HTTP-based message queue for a very special environment
Go to file
Gregory Eremin ccb91bc580 Readme fix 2014-07-12 19:38:43 +07:00
.gitignore Ignore builds 2014-07-12 17:37:36 +07:00
README.md Readme fix 2014-07-12 19:38:43 +07:00
config.go Add readme 2014-07-12 19:36:01 +07:00
counter.go Made Counter less complex 2014-07-12 17:38:35 +07:00
logging.go Logging and error reporting 2014-07-12 17:41:10 +07:00
main.go Verbose shutdown 2014-07-12 17:58:56 +07:00
queue.go Fix counter increment condition 2014-07-12 17:59:15 +07:00
request.go Use logging macros 2014-07-12 17:42:26 +07:00
server.go Use logging macros 2014-07-12 17:42:26 +07:00
state.go Make use of StateSaveInterval constant 2014-07-12 18:16:00 +07:00
storage.go Fix counter increment condition 2014-07-12 17:59:15 +07:00

README.md

Burlesque

Burlesque is a message processing queue writen in Go. It exposes queues using the HTTP API that allows publishing messages and subscribing to them. See the API section for more details.

Burlesque stores messages inside a Kyoto Cabinet database.

Installation

OSX:

brew install go
brew install kyoto-cabinet
go get github.com/KosyanMedia/burlesque

Linux:

...

Starting

Use the following arguments to the burlesque executable:

Argument Description Defaults
-storage Kyoto Cabinet storage path (e.g. storage.kch#zcomp=gz#capsiz=524288000) -
-environment Process environment: development or production development
-port Server HTTP port 4401
-rollbar Rollbar token

API

/publish

Publishes a message to the given queue. If there is a connection waiting to recieve a message from this queue, the message would be transfered directly to the awaiting connection.

Publication can be done via both GET and POST methods. To publish a message via GET method use the queue argument to pass queue name and the msg argument to pass message body. To publish a message via POST method pass message body via request body instead of the msg argument.

Server will respond with OK message.

Example:

/publish?queue=urgent&msg=Process+this+message+as+soon+as+possible!

Response:

OK

/subscribe

Tries to fetch a message from one of the queues given. If there is a message at least in one of these queues, the message will be removed from the queue and returned as response body. The name of the queue from which the message was taken from will be provided inside a Queue response header.

Subscription is always done via GET method. To fetch a message from a queue use the name of the queue as the queues argument value. Multiple queue names could be passed separated with the , (quote) character.

Example:

/subscribe?queues=urgent,someday

Response:

Process this message as soon as possible!

/status

Displays information about the queues, their messages and current subscriptions encoded in JSON format.

Example:

/status

Response:

{
    "urgent": {
        "messages": 0,
        "subscriptions": 0
    },
    "someday": {
        "messages": 0,
        "subscriptions": 0
    }
}

/debug

Displays debug information about the queue process. Currenty displays the number of goroutines only.

Example:

/debug

Response:

{
    "goroutines": 13
}