amqplib-init 1.2.1 → 1.2.2
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.
- package/module/MessageProcessor.js +26 -3
- package/package.json +1 -1
|
@@ -62,12 +62,35 @@ class MessageProcessor {
|
|
|
62
62
|
log.log(`🪴 队列收到消息: ${JSON.stringify(content)}`);
|
|
63
63
|
const startTime = Date.now();
|
|
64
64
|
|
|
65
|
+
// 🔥 兼容性检测:检查callback函数的参数数量
|
|
66
|
+
const callbackParams = callback.length;
|
|
67
|
+
let callbackPromise;
|
|
68
|
+
|
|
69
|
+
if (callbackParams >= 3) {
|
|
70
|
+
// 新版API:支持手动ACK (content, channel, msg)
|
|
71
|
+
log.log(`📋 使用新版手动ACK API (${callbackParams}个参数)`);
|
|
72
|
+
callbackPromise = callback(content, channel, msg);
|
|
73
|
+
} else {
|
|
74
|
+
// 旧版API:自动ACK (content)
|
|
75
|
+
log.log(`📋 使用旧版自动ACK API (${callbackParams}个参数)`);
|
|
76
|
+
callbackPromise = callback(content);
|
|
77
|
+
}
|
|
78
|
+
|
|
65
79
|
// 执行消息处理回调
|
|
66
|
-
|
|
67
|
-
.then(() => {
|
|
80
|
+
callbackPromise
|
|
81
|
+
.then((result) => {
|
|
68
82
|
const endTime = Date.now() - startTime;
|
|
69
83
|
log.log(`☘️ 消息处理完成,延迟: ${delay}ms,总时间: ${endTime}ms`);
|
|
70
|
-
|
|
84
|
+
|
|
85
|
+
// 🔥 检查返回值决定是否自动ACK
|
|
86
|
+
if (result === 'MANUAL_ACK') {
|
|
87
|
+
// 手动ACK模式:从处理集合中移除但不ACK,等待用户手动调用
|
|
88
|
+
this.processingMessages.delete(deliveryTag);
|
|
89
|
+
log.log(`📋 消息 ${deliveryTag} 进入手动ACK模式,等待手动确认`);
|
|
90
|
+
} else {
|
|
91
|
+
// 自动ACK模式:按原有逻辑处理
|
|
92
|
+
this._acknowledgeMessage(msg, channel, deliveryTag, delay);
|
|
93
|
+
}
|
|
71
94
|
})
|
|
72
95
|
.catch(async (e) => {
|
|
73
96
|
log.log('‼️ 处理消息返回错误:', e);
|