在Ubuntu上使用Node.js进行消息队列处理,通常会选择使用RabbitMQ或Kafka等消息队列系统。以下是使用RabbitMQ和Kafka的步骤:
安装RabbitMQ:
sudo apt update
sudo apt install rabbitmq-server
启动RabbitMQ服务:
sudo systemctl start rabbitmq-server
启用RabbitMQ管理插件(可选,方便管理):
sudo rabbitmq-plugins enable rabbitmq_management
安装Node.js RabbitMQ客户端库:
npm install amqplib
编写Node.js代码: 创建一个简单的生产者(producer)和消费者(consumer)脚本。
生产者(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 producer.js
node consumer.js
安装Kafka:
sudo apt update
sudo apt install kafka
启动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客户端库:
npm install kafka-node
编写Node.js代码: 创建一个简单的生产者和消费者脚本。
生产者(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
通过以上步骤,你可以在Ubuntu上使用Node.js进行消息队列处理。根据你的需求选择合适的消息队列系统,并根据官方文档进行更详细的配置和使用。