这里我们来看看如何在Nodejs上使用rabbitmq消息通道,消息通道主要解决RPC服务调用的持久化问题,当然了,还有其它类似的需求,比如可以作为日志的收集,还可以用来作聊天消息中心等。
使用指南
环境
node --version
v8.11.0
安装Rabbitmq
包amqplib
npm install amqplib --save
# 或者
yarn add amqplib
使用demo
const topic = 'hello';
var amqp = require('amqplib/callback_api');
function publisher(conn) {
conn.createChannel(on_open);
function on_open(err, ch) {
if (err != null) bail(err);
ch.assertQueue(topic);
ch.sendToQueue(topic, new Buffer('something to do'));
}
}
function consumer(conn) {
var ok = conn.createChannel(on_open);
function on_open(err, ch) {
if (err != null) bail(err);
ch.assertQueue(topic);
ch.consume(topic, function(msg) {
if (msg !== null) {
console.log('consumer',msg.content.toString());
ch.ack(msg);
}
});
}
}
amqp.connect('amqp://admin:admin@localhost', function(err, conn) {
consumer(conn);
publisher(conn);
});
信赖docker rabbitmq
docker-compose.yml
version: '2' #"登录容器请执行:rabbitmq-plugins enable rabbitmq_management 才可使用WEB管理页面"
services:
rabbitmq:
image: rabbitmq
ports:
- "5672:5672"
- "15672:15672"
hostname: rabbit
environment:
RABBITMQ_DEFAULT_VHOST: /
RABBITMQ_DEFAULT_USER: admin
RABBITMQ_DEFAULT_PASS: admin
运行结果
node index.js
consumer something to do