今回はチュートリアル 5 Topics をやっていきます。Topic と言ったって単にワイルドカードを使った部分一致で待ち受けできますよ、と言うだけです。
では早速 Receiver から。
sub_t.js
#!/usr/bin/env node const amqp = require('amqplib'); const my = require('./my.js'); async function main() { const a = getArgs(); const conn = await amqp.connect(my.conf).catch(my.die); const ch = await conn.createChannel(); await ch.assertExchange(a.exchange, 'topic', { durable: false }); const q = await ch.assertQueue('', { exclusive: true }); a.routingKeys.split(',').forEach(async routingKey => { await ch.bindQueue(q.queue, a.exchange, routingKey); }); console.log('Waiting exchange=%s, routing_keys=%s', a.exchange, a.routingKeys); await ch.consume(q.queue, msg => { console.log('Received: %s', msg.content.toString()); }, { noAck: true } ); }; main(); function getArgs() { if (process.argv.length < 4) { usage(); } return { exchange: process.argv[2], routingKeys: process.argv[3] }; } function usage() { const usage = `sub_r.js EXCHANGE_NAME ROUTING_KEYS(CSV)`; console.log(usage); process.exit(); }
await ch.assertExchange(a.exchange, 'topic', { durable: false });
Exchange をタイプ topic で定義します。前回のコードとの違いはこれだけです。
Sender 側は前回のコードと何も変わりません。
続きを読む