如何在Ubuntu上使用Node.js进行消息队列处理
作者:暮色微凉
时间:2026-07-16
浏览:0
在Ubuntu系统上使用Node.js演示RabbitMQ与Kafka的安装配置及生产者消费者示例。RabbitMQ轻量灵活,适合任务队列和路由;Kafka高吞吐、持久化,适合流处理。本文通过实例对比两者特性,为开发者选择消息队列提供参考。
本文目录
在Ubuntu上搭建消息队列?RabbitMQ和Kafka无疑是两大主力选手。下面直接进入实操环节,分别走一遍两者的安装、配置和简单的Node.js收发示例,保证每一步都能复现。

使用RabbitMQ
安装RabbitMQ:
sudo apt update sudo apt install rabbitmq-server启动服务:
sudo systemctl start rabbitmq-server如果需要Web管理界面,可以启用管理插件(非必需但方便):
sudo rabbitmq-plugins enable rabbitmq_management安装Node.js客户端库——
amqplib:npm install amqplib编写代码:一个生产者(发送消息)和一个消费者(接收消息)。
生产者 producer.js
const amqp = require('amqplib'); async function sendMessage() { const conn = await amqp.connect('amqp://localhost'); const channel = await conn.createChannel(); const queue = 'hello'; await channel.assertQueue(queue, { durable: false }); const message = 'Hello World!'; channel.sendToQueue(queue, Buffer.from(message)); console.log(" [x] Sent %s", message); setTimeout(() => { channel.close(); conn.close(); }, 500); } sendMessage();消费者 consumer.js
const amqp = require('amqplib'); async function receiveMessage() { const conn = await amqp.connect('amqp://localhost'); const channel = await conn.createChannel(); const queue = 'hello'; await channel.assertQueue(queue, { durable: false }); console.log(" [*] Waiting for messages in %s. To exit press CTRL+C", queue); channel.consume(queue, message => { console.log(" [x] Received %s", message.content.toString()); channel.ack(message); }); } receiveMessage();运行测试:分别开两个终端,先启动消费者,再启动生产者。
node consumer.js node producer.js
使用Kafka
安装Kafka:
sudo apt update sudo apt install kafkaKafka依赖Zookeeper,需要先启动Zookeeper,再启动Kafka服务器:
sudo systemctl start zookeeper sudo systemctl start kafka创建一个测试主题(如果还没有的话):
kafka-topics --create --topic test --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1安装Node.js的Kafka客户端——
kafka-node:npm install kafka-node编写生产者和消费者。
生产者 producer.js
const kafka = require('kafka-node'); const Producer = kafka.Producer; const client = new kafka.KafkaClient({ kafkaHost: 'localhost:9092' }); const producer = new Producer(client); producer.on('ready', () => { producer.send([{ topic: 'test', messages: 'Hello Kafka!' }], (err, data) => { if (err) { console.error(err); } else { console.log(data); } }); }); producer.on('error', (err) => { console.error(err); });消费者 consumer.js
const kafka = require('kafka-node'); const Consumer = kafka.Consumer; const client = new kafka.KafkaClient({ kafkaHost: 'localhost:9092' }); const consumer = new Consumer( client, [{ topic: 'test', partition: 0 }], { autoCommit: true } ); consumer.on('message', (message) => { console.log(message); }); consumer.on('error', (err) => { console.error(err); });同样的方式运行测试:
node producer.js node consumer.js
两个方案都走通了,实际使用时可以根据场景选择——RabbitMQ更轻量、灵活,适合任务队列和路由;Kafka则擅长高吞吐、持久化流处理。更详细的配置建议参考官方文档来定制。
作者最新文章
漫蛙漫画最新版本下载
2026-10-13 13:20
漫蛙漫画官方免费漫画入口
2026-10-13 13:19
漫蛙漫画网页版入口
2026-10-13 13:19
最新漫蛙链接合集2026
2026-10-13 13:16
漫蛙manwa2登录网址
2026-10-13 13:14
上一篇:
ubuntu如何利用js进行数据分析
下一篇:
Debian中如何共享环境变量给其他用户
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多










































