# rabbitMQ
- 开启服务: sudo rabbitmq-server
- 关闭服务: sudo rabbitmqctl stop
- 查看状态: sudo rabbitmqctl status
开启后在浏览器打开 http://localhost:15672/#/
初始用户、密码都是 guest
# send.js
var amqp = require('amqplib/callback_api');
amqp.connect('amqp://localhost', function (error0, connection) {
if (error0) {
throw error0;
}
connection.createChannel(function (error1, ch) {
if (error1) {
throw error1;
}
var q = 'task_test';
var msg = process.argv.slice(2).join(' ') || "Hello World!";
ch.assertQueue(q, { durable: true });
ch.sendToQueue(q, Buffer.from(msg), { persistent: true });
console.log(" [x] Sent '%s'", msg);
});
setTimeout(function () {
connection.close();
process.exit(0);
}, 500);
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# receive.js
var amqp = require('amqplib/callback_api');
amqp.connect('amqp://localhost', function (error0, connection) {
if (error0) {
throw error0;
}
connection.createch(function (error1, ch) {
if (error1) {
throw error1;
}
var queue = 'task_test';
ch.assertQueue(queue, {
durable: true
});
ch.prefetch(1); // 每次只接收一个,处理完了才再次接收
console.log(" [*] Waiting for messages in %s. To exit press CTRL+C", queue);
ch.consume(queue, function (msg) {
var secs = msg.content.toString().split('.').length - 1;
console.log(" [x] Received %s", msg.content.toString());
setTimeout(function () {
console.log(" [x] Done");
ch.ack(msg); // 消息确认
}, secs * 1000);
}, {
noAck: false // 开启消息确认标识
});
});
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# redis
redis-server
← php安装 typescript →