RabbitMQ&AMQP 中云消息队列 RabbitMQ 版
怎么读取消息 , 并销毁消息 ?
能发个 nodejs 版本的文档链接吗 ?
有没有nodejs 版本的呀?
在RabbitMQ中,读取消息并销毁消息通常是通过消费者(Consumer)来完成的。当消费者从队列(Queue)中读取消息时,它会自动将消息从队列中移除,这就是所谓的“消费”消息。一旦消息被消费,它就不再存在于队列中,也无法再次被其他消费者读取。
以下是使用Node.js和RabbitMQ官方库的一个简单示例:
const amqp = require('amqplib');
async function main() {
const connection = await amqp.connect('amqp://localhost');
const channel = await connection.createChannel();
const queueName = 'my-queue';
await channel.assertQueue(queueName);
const msgHandler = async (msg) => {
console.log('Received message:', msg.content.toString());
// 这里可以执行你的业务逻辑...
// 然后手动确认消息已被消费
await msg.ack();
};
channel.consume(queueName, msgHandler);
}
main();
在这个示例中,我们首先连接到RabbitMQ服务器,然后创建一个通道(Channel),接着声明一个队列(Queue),最后注册一个消息处理器(Message Handler)来处理接收到的消息。当消息处理器接收到消息时,它会打印出消息的内容,然后手动确认消息已被消费。
关于Node.js版本的文档,你可以参考RabbitMQ官方库的文档:https://github.com/rabbitmq/rabbitmq-nodejs-client
要从RabbitMQ队列中读取消息并销毁消息,可以使用AMQP协议以及相关库如amqplib。以下是一段简单的示例代码:
const amqp = require('amqplib/callback_api');
amqp.connect('amqp://localhost', function(error0, connection) {
if (error0) {
throw error0;
}
connection.createChannel(function(error1, channel) {
if (error1) {
throw error1;
}
const queue = 'hello';
channel.assertQueue(queue, {durable: false});
console.log(" [*] Waiting for messages in %s. To exit press CTRL+C", queue);
channel.consume(queue, function(msg) {
console.log(" [x] Received %s", msg.content.toString());
// 删除消息
channel.basicAck(msg.deliveryTag, false);
}, {noAck: false});
});
});
这段代码首先连接到本地的RabbitMQ服务器,然后声明一个名为“hello”的队列,并开始监听该队列的消息。当接收到消息时,它会打印出消息的内容,并通过basicAck方法确认接收到消息,从而删除该消息。
以上就是关于在Node.js中使用AMQP协议和amqplib库来读取消息并销毁消息的基本流程。关于更详细的使用方法和示例,请参考以下文档:
开源有NodeJS客户端,直接使用。
怎么读取消息 :起Consumer 消费Queue里的消息
并销毁消息 :没有销毁的概念。消息消费成功后ack就可以。RabbitMQ 收发消息协议和开源完全一致的。直接查看开源官网文档。此回答来自钉群RabbitMQ&AMQP 产品咨询群。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
高弹性低成本、更稳定更安全、智能化免运维的消息队列服务,涵盖RocketMQ、Kafka、RabbitMQ、MQTT、MNS等。 RocketMQ一站式学习:https://rocketmq-learning.com