coyote
v0.9.1
Published
Rabbit consumer
Downloads
7
Readme
Coyote
Borrows heavily (including a lot of code) from RabbitJS designed to give you better access lower-level AMQP options like message properties and headers without losing the benefits of abstraction.
API
Coyote
#constructor(amqpUri, type, queue, options)
amqpUri
- The URL for your RabbitMQ server (e.g.amqps://user:[email protected]:5672
)type
- One ofPUSH
,PULL
,REQUEST
,REPLY
,PUBLISH
,SUBSCRIBE
,WORKER
queue
- The queue name for this producer/consumeroptions
- optional; an object containing any oftopic
,expiration
,prefetch
,persistent
,routing
(see the rabbit.js documentation)
#pause()
- pause consumption of messages (only applies to consumer types)#resume()
- resume consumption of messages (only applies to consumer types)#shutdown()
- shutdown the connection and close the sockets#setHandler(handler)
- set the message handlerhandler
- function; this function must return a promise. It will be called for each message received
#write(data)
- writes a message to the queuedata
- object; if this is a plain object, it will be stringified and sent as the message content.- If
data
contains ONLY the keysproperties
andcontent
, thencontent
will be stringified andproperties
will be used as the RMQ message properties (though some may be overridden by Coyote)
Events
debug
- various messages to help you debug (example usage:coyote.on('debug', console.log);
)message
- emitted when a message is received (don't)data
- the message from RabbitMQcallback
-
error
- emitted when the message handler callback is triggered with an error as the first parametererror
- the error that occurredmessage
- the message that was being handled when the error was raised
ready
- emitted once when the instance is ready to read/writeresponse
- emitted for REQUEST sockets when the reply is returneddata
- the reply message
Socket Types
- See the
rabbit.js
documentation for an explanation of the socket types
Examples
Callback API
var Coyote = require('coyote');
var coyote = new Coyote('amqp://localhost', 'REPLY', 'rabbits');
coyote.on('job', function(rabbit, callback) {
eat(rabbit, function() {
callback();
});
})''
Promise API
var Coyote = require('coyote');
var coyote = new Coyote('amqp://localhost', 'REPLY', 'rabbits');
coyote.setHandler(function handleJob(rabbit) {
return consume(rabbit)
.then(function() {
return 'Yum!';
})
.catch(RabbitTooFastError, function() {
return 'It got away :(';
});
});