UNPKG

hook.io-amqp-listener

Version:

A hook that listens to an amqp queue and forwards messages to the hook.io bus

66 lines (53 loc) 2.1 kB
Hook = require('hook.io').Hook util = require 'util' colors = require 'colors' path = require 'path' fs = require "fs" amqp = require "amqp" QueueListener = require("./queue_listener").QueueListener QueuePublisher = require("./queue_publisher").QueuePublisher ConnectionManager = require("./connection_manager").ConnectionManager require('pkginfo')(module,'version','hook') class exports.AmqpListener extends Hook constructor: (options) -> @connectionManager = new ConnectionManager() @queues = [] Hook.call @, options @on "amqp-listener::add", (data) => @_add(data) @on "hook::ready", => for queue in (@queues || []) @emit "amqp-listener::add", queue _queueMessageReceived :(queue,m, headers, deliveryInfo) => @emit "amqp-listener::received", queue : queue.queueName message : m contentType: deliveryInfo.contentType deliveryMode :deliveryInfo.deliveryMode deliveryTag: deliveryInfo.deliveryTag redelivered: deliveryInfo.redelivered exchange : deliveryInfo.exchange routingKey : deliveryInfo.routingKey consumerTag : deliveryInfo.consumerTag #console.log "Received: #{deliveryInfo.routingKey} Headers: #{JSON.stringify(headers)} Message: #{m} DELIVER: #{JSON.stringify(deliveryInfo)}" _add : (data) => @connectionManager.getConnection data.connection, (err,amqpConnection) => return cb(err) if err listener = new QueueListener amqpConnection,data.queueName,@_queueMessageReceived listener.open (err) => if err @emit "amqp-listener::error", data : data, error : err else @queues.push(listener) ### publisher = new QueuePublisher(amqpConnection,data.queueName,data.exchangeName,data.exchangeType) publisher.open (err) => if(err) console.log "Publisher open callback with error #{err}" else publisher.publishAsJson frankSays : "YEAH, this is a message" ### #_remove : (data) => # # Implement remove