Rabbitmq和nodejs在收到消息后删除队列



我是rabbitmq的新手,试图弄清楚如何在收到消息后删除队列。感谢您的帮助。以下是消费者脚本:

const amqp = require("amqplib");
let result = connect();
async function connect() {
try {
const amqpServer = "amqp://localhost"
const connection = await amqp.connect(amqpServer)
const channel = await connection.createChannel();
await channel.assertQueue("jobs");
channel.consume("jobs", message => {
const input = JSON.parse(message.content.toString());
console.log(`Recieved job with input ${input}`);
})
console.log("Waiting for messages...");
} catch (ex) {
console.error(ex)
}
}

根据assertQueue队列文档,您可以在创建时传递一个autoDelete选项,该选项将在使用者数量降至0后进行清理。

const amqp = require("amqplib");
let result = connect();
async function connect() {
try {
const amqpServer = "amqp://localhost"
const connection = await amqp.connect(amqpServer)
const channel = await connection.createChannel();
await channel.assertQueue("jobs", {autoDelete: true});
channel.consume("jobs", message => {
const input = JSON.parse(message.content.toString());
console.log(`Recieved job with input ${input}`);
})
console.log("Waiting for messages...");
} catch (ex) {
console.error(ex)
}
}

然后,您可以在通道上调用cancel来停止使用这些消息。

channel.cancel("jobs");

最后,您可以使用deleteQueue强制删除队列,尽管如果在回调中执行,这可能会产生一些奇怪的副作用。

最新更新