12345678910111213141516171819202122232425262728293031323334353637383940 |
- #!/usr/bin/env node
- const amqp = require('../');
- (async () => {
- const connection = await amqp.connect();
- const channel = await connection.createChannel();
- process.once('SIGINT', async () => {
- await channel.close();
- await connection.close();
- });
- const { exchange } = await channel.assertExchange('matching exchange', 'headers');
- const { queue } = await channel.assertQueue();
- // 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.
- await channel.bindQueue(queue, exchange, '', {
- 'x-match': 'any',
- 'foo': 'bar',
- 'baz': 'boo'
- });
- await channel.consume(queue, (message) => {
- console.log(message.content.toString());
- }, { noAck: true });
- channel.publish(exchange, '', Buffer.from('hello'), { headers: { baz: 'boo' }});
- channel.publish(exchange, '', Buffer.from('hello'), { headers: { foo: 'bar' }});
- channel.publish(exchange, '', Buffer.from('lost'), { headers: { meh: 'nah' }});
- console.log(' [x] To exit press CTRL+C.');
- })();
|