amqplib-init 1.1.7 → 1.1.9
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/index.js +23 -13
- package/package.json +2 -2
package/index.js
CHANGED
|
@@ -44,18 +44,29 @@ module.exports = {
|
|
|
44
44
|
if (msg !== null) {
|
|
45
45
|
try {
|
|
46
46
|
const content = JSON.parse(msg.content.toString());
|
|
47
|
-
log.log(
|
|
47
|
+
log.log(`🪴 队列收到消息: ${JSON.stringify(content)}`);
|
|
48
48
|
const startTime = Date.now();
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
// 执行消息处理回调
|
|
50
|
+
callback(content).then(() => {
|
|
51
|
+
const endTime = Date.now() - startTime;
|
|
52
|
+
log.log(`☘️ 消息处理完成,延迟: ${delay}ms,总时间: ${endTime}ms`);
|
|
53
|
+
setTimeout(() => channel.ack(msg), delay); // 延迟ack
|
|
54
|
+
}).catch(async (e) => {
|
|
55
|
+
// 拒绝消息并重新排队
|
|
56
|
+
log.log('‼️ 处理消息返回错误:', e);
|
|
57
|
+
await happy.sleep(5);
|
|
58
|
+
channel.reject(msg, true);
|
|
59
|
+
});
|
|
53
60
|
} catch (e) {
|
|
54
|
-
|
|
55
|
-
|
|
61
|
+
// 拒绝消息并重新排队
|
|
62
|
+
log.log('‼️ 处理消息时出错:', e.message);
|
|
63
|
+
await happy.sleep(5);
|
|
64
|
+
channel.reject(msg, true);
|
|
56
65
|
}
|
|
57
66
|
} else {
|
|
58
|
-
|
|
67
|
+
// 直接消息此消息;
|
|
68
|
+
channel.ack(msg);
|
|
69
|
+
log.error('收到无效消息(自动消费):', msg);
|
|
59
70
|
}
|
|
60
71
|
}, { noAck: false });
|
|
61
72
|
};
|
|
@@ -87,18 +98,17 @@ module.exports = {
|
|
|
87
98
|
setInterval(async () => {
|
|
88
99
|
try {
|
|
89
100
|
const { messageCount } = await channel.checkQueue(channelName);
|
|
90
|
-
const
|
|
91
|
-
log.log(`MQ队列中有 ${messageCount}
|
|
92
|
-
if (messageCount === 0 &&
|
|
101
|
+
const hookResult = await queryHook()
|
|
102
|
+
log.log(`MQ队列中有 ${messageCount} 条消息,检测是否可以重启: ${hookResult?1:0}`);
|
|
103
|
+
if (messageCount === 0 && hookResult) {
|
|
93
104
|
log.log('队列中没有消息,正在重载服务...');
|
|
94
|
-
shelljs
|
|
105
|
+
shelljs?.exec(`pm2 reload ${pmId}`); // 使用PM2重载服务
|
|
95
106
|
}
|
|
96
107
|
} catch (e) {
|
|
97
108
|
log.error('检查队列长度时出错:', e);
|
|
98
109
|
}
|
|
99
110
|
}, autoReload);
|
|
100
111
|
}
|
|
101
|
-
|
|
102
112
|
finish(); // 执行初始化完成回调
|
|
103
113
|
} catch (e) {
|
|
104
114
|
log.error('初始化RabbitMQ连接时出错:', e);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "amqplib-init",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.9",
|
|
4
4
|
"description": "消息队列初始化",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"license": "ISC",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"amqplib": "^0.10.4",
|
|
13
|
-
"chalk-style": "^1.0.
|
|
13
|
+
"chalk-style": "^1.0.3",
|
|
14
14
|
"happy-help": "^1.0.1",
|
|
15
15
|
"js-base64": "^3.7.7",
|
|
16
16
|
"shelljs": "^0.8.5"
|