amqplib-init 1.2.3 → 1.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +158 -1
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1 +1,158 @@
1
-
1
+ # amqplib-init
2
+
3
+ 一个强大且易用的 RabbitMQ 消息队列初始化和管理库,支持自动重连、消息处理、长任务执行等功能。
4
+
5
+ ## 🚀 特性
6
+
7
+ - **模块化架构** - 清晰的模块分离,易于维护和扩展
8
+ - **自动重连** - 连接断开时自动重连,确保服务稳定性
9
+ - **消息处理** - 内置消息确认/拒绝机制,支持延迟确认
10
+ - **长任务支持** - 支持最长15分钟的消息处理任务
11
+ - **错误处理** - 智能处理空消息和格式错误的消息,防止阻塞
12
+ - **自动重载** - 支持自动重载监控
13
+ - **配置灵活** - 支持多种配置方式和自动配置获取
14
+
15
+ ## 📦 安装
16
+
17
+ ```bash
18
+ npm install amqplib-init
19
+ ```
20
+
21
+ ## 🔧 快速开始
22
+
23
+ ### 基础用法
24
+
25
+ ```javascript
26
+ const { init } = require('amqplib-init');
27
+
28
+ // 初始化消息队列
29
+ await init({
30
+ channelName: 'my-queue',
31
+ amqpLink: 'amqp://localhost:5672',
32
+ callback: async (message) => {
33
+ console.log('收到消息:', message);
34
+ // 处理消息逻辑
35
+ await processMessage(message);
36
+ }
37
+ });
38
+ ```
39
+
40
+ ### 高级用法
41
+
42
+ ```javascript
43
+ const { AMQPInitializer } = require('amqplib-init');
44
+
45
+ const initializer = new AMQPInitializer();
46
+
47
+ await initializer.init({
48
+ channelName: 'my-queue',
49
+ amqpLink: 'amqp://localhost:5672',
50
+ prefetch: 1,
51
+ durable: true,
52
+ delay: 1000,
53
+ heartbeat: 60,
54
+ timeout: 300000,
55
+ messageTimeout: 900000,
56
+ callback: async (message) => {
57
+ // 消息处理逻辑
58
+ return processMessage(message);
59
+ },
60
+ finish: () => {
61
+ console.log('初始化完成');
62
+ },
63
+ initHook: async ({ channel, connection }) => {
64
+ // 初始化钩子
65
+ console.log('连接已建立');
66
+ }
67
+ });
68
+
69
+ // 获取状态信息
70
+ console.log(initializer.getStatus());
71
+
72
+ // 优雅关闭
73
+ await initializer.shutdown();
74
+ ```
75
+
76
+ ## ⚙️ 配置参数
77
+
78
+ | 参数 | 类型 | 默认值 | 描述 |
79
+ |------|------|--------|------|
80
+ | `channelName` | string | `'node-test-channel'` | 队列名称 |
81
+ | `amqpLink` | string | `''` | RabbitMQ 连接地址 |
82
+ | `amqpAutoLink` | string | `''` | 自动获取连接地址的API |
83
+ | `prefetch` | number | `1` | 预取消息数量 |
84
+ | `durable` | boolean | `true` | 队列持久化 |
85
+ | `delay` | number | `0` | 消息确认延迟时间(ms) |
86
+ | `heartbeat` | number | `60` | 心跳间隔(秒) |
87
+ | `timeout` | number | `300000` | 连接超时时间(ms) |
88
+ | `messageTimeout` | number | `900000` | 消息处理超时时间(ms) |
89
+ | `reconnectDelay` | number | `5000` | 重连延迟时间(ms) |
90
+ | `maxReconnectAttempts` | number | `10` | 最大重连次数 |
91
+ | `autoReload` | number | `0` | 自动重载间隔(秒) |
92
+ | `callback` | function | `() => {}` | 消息处理回调 |
93
+ | `finish` | function | `() => {}` | 初始化完成回调 |
94
+ | `initHook` | function | `() => {}` | 初始化钩子 |
95
+ | `queryHook` | function | `() => {}` | 查询钩子 |
96
+
97
+ ## 🛡️ 错误处理
98
+
99
+ v1.2.3+ 版本增强了错误处理能力:
100
+
101
+ - **空消息处理** - 自动识别并确认空消息,防止消费阻塞
102
+ - **JSON解析错误** - 智能处理格式错误的消息,避免无限循环
103
+ - **连接异常** - 自动重连机制,确保服务稳定性
104
+
105
+ ```javascript
106
+ // 库会自动处理以下情况:
107
+ // - 空消息内容
108
+ // - null 或 undefined 消息
109
+ // - 无效的 JSON 格式
110
+ // - 连接断开重连
111
+ ```
112
+
113
+ ## 🔍 状态监控
114
+
115
+ ```javascript
116
+ const status = initializer.getStatus();
117
+ console.log({
118
+ isConnected: status.isConnected, // 连接状态
119
+ processingCount: status.processingCount, // 处理中消息数量
120
+ autoReloaderActive: status.autoReloaderActive, // 自动重载状态
121
+ channelName: status.channelName // 当前队列名
122
+ });
123
+ ```
124
+
125
+ ## 🚨 注意事项
126
+
127
+ 1. **长任务支持** - 支持最长15分钟的消息处理,超时会自动处理
128
+ 2. **消息确认** - 消息处理成功后会自动确认,失败会重新排队
129
+ 3. **重连机制** - 连接断开时会自动重连并恢复消息处理
130
+ 4. **内存管理** - 内置消息状态跟踪,防止内存泄漏
131
+
132
+ ## 📝 更新日志
133
+
134
+ ### v1.2.3 (2025-08-25)
135
+ - 🐛 修复 JSON 解析错误导致的消息处理阻塞
136
+ - ✨ 增加空消息和无效消息的自动确认机制
137
+ - 📝 完善错误日志输出,便于问题排查
138
+
139
+ ### v1.2.1
140
+ - 🔧 模块化架构重构
141
+ - ✨ 支持15分钟长任务处理
142
+ - 🚀 优化自动重连逻辑
143
+
144
+ ## 📄 许可证
145
+
146
+ ISC
147
+
148
+ ## 🤝 贡献
149
+
150
+ 欢迎提交 Issue 和 Pull Request!
151
+
152
+ ## 📞 支持
153
+
154
+ 如果您在使用过程中遇到问题,请通过以下方式获取支持:
155
+
156
+ 1. 查看本文档的常见问题
157
+ 2. 提交 GitHub Issue
158
+ 3. 查看示例代码 `demo.js`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "amqplib-init",
3
- "version": "1.2.3",
3
+ "version": "1.2.4",
4
4
  "description": "消息队列初始化 - 模块化架构版本 (支持15分钟长任务)",
5
5
  "main": "index.js",
6
6
  "scripts": {