#!/usr/bin/env node // Example of using a headers exchange var amqp = require('../') amqp.connect().then(function(conn) { return conn.createChannel().then(withChannel); }, console.error); function withChannel(ch) { // NB the type of the exchange is 'headers' ch.assertExchange('matching exchange', 'headers').then(function(ex) { ch.assertQueue().then(function(q) { bindAndConsume(ch, ex, q).then(function() { send(ch, ex); }); }); }); } function bindAndConsume(ch, ex, q) { // When using a headers exchange, the headers to be matched go in // the binding arguments. The routing key is ignore, so best left // empty. // 'x-match' is 'all' or 'any', meaning "all fields must match" or // "at least one field must match", respectively. The values to be // matched go in subsequent fields. ch.bindQueue(q.queue, ex.exchange, '', {'x-match': 'any', 'foo': 'bar', 'baz': 'boo'}); return ch.consume(q.queue, function(msg) { console.log(msg.content.toString()); }, {noAck: true}); } function send(ch, ex) { // The headers for a message are given as an option to `publish`: ch.publish(ex.exchange, '', Buffer.from('hello'), {headers: {baz: 'boo'}}); ch.publish(ex.exchange, '', Buffer.from('world'), {headers: {foo: 'bar'}}); }