RocketMQ Client for Node.js: 安装与使用指南
目录结构及介绍
在下载或克隆apache/rocketmq-client-nodejs
项目之后,您将看到以下主要的目录结构:
├── README.md // 项目说明文档
├ ├── examples // 示例代码目录
│ ├── producer.js // 生产者示例脚本
│ └── consumer.js // 消费者示例脚本
├ ├── lib // 主要源代码目录
│ ├── index.js // 包入口点
│ ├── Consumer.js // 消费者类
│ ├── Producer.js // 生产者类
│ └── ... // 其他辅助和内部类
└── test // 单元测试目录
└── index.test.js // 测试用例文件
examples
目录
此目录包含了两个主要的JavaScript文件,用于演示如何使用rocketmq-client-nodejs
进行消息的发送和接收。
producer.js
这个示例展示了如何初始化一个生产者,并使用它来发送消息到RocketMQ主题(Topic),包括设置参数、发送消息和关闭连接的基本流程。
consumer.js
此示例展示了如何创建一个消费者对象,然后订阅特定的主题来接收消息。其中包括处理接收到的消息和停止消费者的逻辑。
lib
目录
这是核心代码所在的地方,其中:
index.js
是整个Node.js客户端的主要入口点。Consumer.js
和Producer.js
分别定义了消费者和生产者的类和方法,允许用户与RocketMQ进行交互。
test
目录
test
目录存放着单元测试文件,这些测试是为了保证代码质量和正确性设计的。
启动文件介绍
尽管没有单独的“启动文件”,但在examples
目录中的producer.js
和consumer.js
可被视为分别用于启动生产和消费过程的脚本。
producer.js
const { RocketMQProducer } = require('../../lib');
(async function main() {
try {
const producer = new RocketMQProducer({
groupId: 'your-group-id',
nameSrvAddr: 'localhost:9876'
});
await producer.init();
const messageBody = Buffer.from('Hello RocketMQ!');
const sendResult = await producer.send({
topic: 'Your-TOPIC',
body: messageBody,
});
console.log(sendResult);
await producer.shutdown();
} catch (err) {
console.error(err);
}
})();
consumer.js
const { RocketMQPushConsumer } = require('../../lib');
async function startConsumer() {
const consumer = new RocketMQPushConsumer({
groupId: 'your-consumer-group-id',
nameSrvAddr: 'localhost:9876'
});
consumer.subscribe('Your-TOPIC', '*');
consumer.registerMessageListener((messages, context) => {
messages.forEach(message => {
console.log(`Received message: ${message.body.toString()}`);
});
return Promise.resolve();
});
await consumer.start();
}
startConsumer().catch(console.error);
配置文件介绍
实际上,在rocketmq-client-nodejs
中并没有独立的配置文件,所有的配置都是通过构造函数的参数传入的。然而,您可以在一个JSON或JS文件中保存这些配置值,以提高代码的整洁性和可维护性。
例如,可以在您的项目根目录创建一个名为config.js
的文件,其中包含RocketMQ的连接信息和其他必要的参数:
// config.js
module.exports = {
groupId: 'your-group-id',
nameSrvAddr: 'localhost:9876',
};
然后在producer.js
或consumer.js
中导入并使用:
const config = require('./config.js');
const { RocketMQProducer } = require('../../lib');
(async function main() {
try {
const producer = new RocketMQProducer(config);
// ...
});
这样可以使配置项更加清晰且易于管理和修改。不过,具体的配置选项可能因RocketMQ的不同版本而有所变化,因此建议参考最新版的官方文档以获得最新的配置细节。