开发者社区 > 云原生 > 云消息队列 > 正文

RabbitMQ&AMQP 中云消息队列 RabbitMQ 版 怎么读取消息 , 并销毁消息 ?

RabbitMQ&AMQP 中云消息队列 RabbitMQ 版

怎么读取消息 , 并销毁消息 ?
能发个 nodejs 版本的文档链接吗 ?
有没有nodejs 版本的呀?

展开
收起
小小鹿鹿鹿 2023-11-14 22:47:19 125 0
3 条回答
写回答
取消 提交回答
  • 在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

    2023-11-15 15:30:30
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    要从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库来读取消息并销毁消息的基本流程。关于更详细的使用方法和示例,请参考以下文档:

    2023-11-15 13:32:50
    赞同 展开评论 打赏
  • 开源有NodeJS客户端,直接使用。

    怎么读取消息 :起Consumer 消费Queue里的消息
    并销毁消息 :没有销毁的概念。消息消费成功后ack就可以。RabbitMQ 收发消息协议和开源完全一致的。直接查看开源官网文档。此回答来自钉群RabbitMQ&AMQP 产品咨询群。

    2023-11-14 23:36:35
    赞同 展开评论 打赏

涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/

相关产品

  • 云消息队列 MQ
  • 热门讨论

    热门文章

    相关电子书

    更多
    企业互联网架构之消息队列 立即下载
    基于消息队列RocketMQ的大型分布式应用上云最佳实践 立即下载
    云原生消息队列Apache RocketMQ 立即下载