[英]Sending messages to exclusive queue with AMQP/RabbitMQ
我有许多机器可以执行某些操作。 要启动操作,我想向以机器ID“ 12345”命名的队列发送消息。
我认为,为了避免其他人使用这些消息,队列应该是排他的。
但是从我的控制器,如果在使用队列的机器上将其声明为独占队列,则无法断言该队列。 但是,我可以通过指定其名称发送到队列,而无需声明,但是我想这是不好的做法吗?
机器正在侦听以下命令:
ch.assertQueue(machineID, {exclusive: true, durable: false}, function (err, q) {
if (err) console.log(err)
console.log("opened queue")
ch.consume(q.queue, function (message) {
console.log(message.content.toString())
})
})
当我发送到队列时,由于排他性问题,它将在客户端的以下行中失败:
ch.assertQueue(machineID, {})
但是,如果我在上面的行中发表评论,它将发送消息。
ch.sendToQueue(machineID, new Buffer(id.toString()))
解决这个问题的最优雅的方法是什么?
一种方法是创建“直接”类型的交换并将您的队列绑定到该交换。 因此,如果您将任何消息传递给该交换,那么它将仅被路由到名称与传递给该交换的路由密钥相同的队列。 例如,通过这种交换,所有路由键为“ 12345”的消息将被路由到名为“ 12345”的队列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.