商城首页欢迎来到中国正版软件门户

您的位置:首页 >Node.js在Ubuntu上如何进行消息队列处理

Node.js在Ubuntu上如何进行消息队列处理

  发布于2026-04-26 阅读(0)

扫一扫,手机访问

在Ubuntu上使用Node.js进行消息队列处理

想在Ubuntu上玩转消息队列?Node.js生态提供了不少选择,比如RabbitMQ、Apache Kafka,还有Redis。今天,咱们就以RabbitMQ为例,手把手带你走一遍从安装到跑通第一个“Hello World”消息的全过程。

Node.js在Ubuntu上如何进行消息队列处理

1. 安装RabbitMQ

第一步,得先把RabbitMQ请到你的Ubuntu系统里。打开终端,执行下面这组命令就行:

sudo apt update
sudo apt install rabbitmq-server

安装完成后,别急着下一步,先把服务启动起来:

sudo systemctl start rabbitmq-server

怎么确认它真的在跑呢?检查一下服务状态是最稳妥的办法:

sudo systemctl status rabbitmq-server

2. 安装Node.js和npm

消息队列的“地基”打好了,接下来该准备Node.js环境了。如果你的系统里还没有,用下面这串命令安装Node.js和它的包管理器npm,非常方便:

curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs

3. 创建Node.js项目

环境齐备,是时候创建一个专属的项目目录了。这就像给你的代码安个家:

mkdir my-rabbitmq-project
cd my-rabbitmq-project

进入项目目录后,初始化一个新的Node.js项目。加上-y参数,可以跳过那些交互式问答,快速生成package.json文件:

npm init -y

4. 安装RabbitMQ客户端库

Node.js要和RabbitMQ对话,需要一个“翻译官”,也就是客户端库。在Node.js生态里,amqplib是这个角色的不二之选。安装它只需要一行命令:

npm install amqplib

5. 编写消息生产者代码

现在进入实战环节。我们先来创建消息的“发送方”,也就是生产者。创建一个名为producer.js的文件,把下面的代码放进去:

const amqp = require('amqplib');

async function sendMessage() {
    try {
        const connection = await amqp.connect('amqp://localhost');
        const channel = await connection.createChannel();
        const queue = 'hello';
        await channel.assertQueue(queue, { durable: false });

        const message = 'Hello World!';
        channel.sendToQueue(queue, Buffer.from(message));
        console.log(` [x] Sent ${message}`);

        setTimeout(() => {
            channel.close();
            connection.close();
        }, 500);
    } catch (error) {
        console.error(error);
    }
}

sendMessage();

这段代码干了啥?简单说,就是连接到本地的RabbitMQ服务,声明一个叫“hello”的队列,然后往里面塞一条“Hello World!”消息。发送成功后,它会在控制台告诉你,然后优雅地关闭连接。

6. 编写消息消费者代码

有发就得有收。接下来创建消息的“接收方”,也就是消费者。再新建一个consumer.js文件,内容如下:

const amqp = require('amqplib');

async function receiveMessage() {
    try {
        const connection = await amqp.connect('amqp://localhost');
        const channel = await connection.createChannel();
        const queue = 'hello';
        await channel.assertQueue(queue, { durable: false });

        console.log(` [*] Waiting for messages in ${queue}. To exit press CTRL+C`);

        channel.consume(queue, (msg) => {
            console.log(` [x] Received ${msg.content.toString()}`);
            channel.ack(msg);
        });
    } catch (error) {
        console.error(error);
    }
}

receiveMessage();

消费者做的事情正好相反:它同样连接到“hello”队列,然后就开始耐心等待。一旦有消息进来,它就会抓取出来,把内容打印在控制台上,并确认消息已处理。

7. 运行生产者和消费者

最激动人心的时刻到了——让整个流程跑起来。你需要打开两个终端窗口。

在第一个终端里,运行生产者脚本:

node producer.js

很快,你会看到它打印出 [x] Sent Hello World! 的发送成功提示。

紧接着,在第二个终端里,启动消费者脚本:

node consumer.js

如果一切顺利,这个终端窗口会立刻显示出 [x] Received Hello World!。瞧,消息已经从生产者那里,穿越队列,稳稳地送到了消费者手中。

总结

到这里,一个在Ubuntu上使用Node.js和RabbitMQ的基础消息队列处理流程就完整实现了。别看这只是个简单的“Hello World”,它已经包含了连接、通道、队列声明、发送和接收这些核心概念。基于这个骨架,你可以轻松地扩展出更多的生产者和消费者,或者引入更复杂的路由、确认机制和错误处理逻辑,来应对真实的业务场景。消息队列的世界大门,已经向你打开了。

本文转载于:https://www.yisu.com/ask/51301167.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注