您的位置:首页 >Node.js在Ubuntu上如何进行消息队列处理
发布于2026-04-26 阅读(0)
扫一扫,手机访问
想在Ubuntu上玩转消息队列?Node.js生态提供了不少选择,比如RabbitMQ、Apache Kafka,还有Redis。今天,咱们就以RabbitMQ为例,手把手带你走一遍从安装到跑通第一个“Hello World”消息的全过程。

第一步,得先把RabbitMQ请到你的Ubuntu系统里。打开终端,执行下面这组命令就行:
sudo apt update
sudo apt install rabbitmq-server
安装完成后,别急着下一步,先把服务启动起来:
sudo systemctl start rabbitmq-server
怎么确认它真的在跑呢?检查一下服务状态是最稳妥的办法:
sudo systemctl status rabbitmq-server
消息队列的“地基”打好了,接下来该准备Node.js环境了。如果你的系统里还没有,用下面这串命令安装Node.js和它的包管理器npm,非常方便:
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs
环境齐备,是时候创建一个专属的项目目录了。这就像给你的代码安个家:
mkdir my-rabbitmq-project
cd my-rabbitmq-project
进入项目目录后,初始化一个新的Node.js项目。加上-y参数,可以跳过那些交互式问答,快速生成package.json文件:
npm init -y
Node.js要和RabbitMQ对话,需要一个“翻译官”,也就是客户端库。在Node.js生态里,amqplib是这个角色的不二之选。安装它只需要一行命令:
npm install amqplib
现在进入实战环节。我们先来创建消息的“发送方”,也就是生产者。创建一个名为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!”消息。发送成功后,它会在控制台告诉你,然后优雅地关闭连接。
有发就得有收。接下来创建消息的“接收方”,也就是消费者。再新建一个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”队列,然后就开始耐心等待。一旦有消息进来,它就会抓取出来,把内容打印在控制台上,并确认消息已处理。
最激动人心的时刻到了——让整个流程跑起来。你需要打开两个终端窗口。
在第一个终端里,运行生产者脚本:
node producer.js
很快,你会看到它打印出 [x] Sent Hello World! 的发送成功提示。
紧接着,在第二个终端里,启动消费者脚本:
node consumer.js
如果一切顺利,这个终端窗口会立刻显示出 [x] Received Hello World!。瞧,消息已经从生产者那里,穿越队列,稳稳地送到了消费者手中。
到这里,一个在Ubuntu上使用Node.js和RabbitMQ的基础消息队列处理流程就完整实现了。别看这只是个简单的“Hello World”,它已经包含了连接、通道、队列声明、发送和接收这些核心概念。基于这个骨架,你可以轻松地扩展出更多的生产者和消费者,或者引入更复杂的路由、确认机制和错误处理逻辑,来应对真实的业务场景。消息队列的世界大门,已经向你打开了。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9