さて今回は本家チュートリアル 4 Routing をやってまいります。
Routing と言ったって Receiver 側で名前を OR で待ち受けれるだけと言う簡単な機能です。
pub_r.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, 'direct', {
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, 'direct', {
durable: false
});
Exchange のタイプを direct にします。
a.routingKeys.split(',').forEach(async routingKey => {
await ch.bindQueue(q.queue, a.exchange, routingKey);
});
bindQueue する時に、第3引数に対して待ち受ける routingKey を指定します。複数指定が可能です。
次は Sender 側。
続きを読む