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
}