coyote

0.9.1 • Public • Published

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:pass@127.0.0.1:5672)
    • type - One of PUSH, PULL, REQUEST, REPLY, PUBLISH, SUBSCRIBE, WORKER
    • queue - The queue name for this producer/consumer
    • options - optional; an object containing any of topic, 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 handler

    • handler - function; this function must return a promise. It will be called for each message received
  • #write(data) - writes a message to the queue

    • data - object; if this is a plain object, it will be stringified and sent as the message content.
    • If data contains ONLY the keys properties and content, then content will be stringified and properties 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 RabbitMQ
    • callback -
  • error - emitted when the message handler callback is triggered with an error as the first parameter
    • error - the error that occurred
    • message - the message that was being handled when the error was raised
  • ready - emitted once when the instance is ready to read/write
  • response - emitted for REQUEST sockets when the reply is returned
    • data - the reply message

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 :(';
    });
});

Readme

Keywords

Package Sidebar

Install

npm i coyote

Weekly Downloads

4

Version

0.9.1

License

MIT

Last publish

Collaborators

  • bjy