Nodejs - RabbitMQ

这里我们来看看如何在Nodejs上使用rabbitmq消息通道,消息通道主要解决RPC服务调用的持久化问题,当然了,还有其它类似的需求,比如可以作为日志的收集,还可以用来作聊天消息中心等。

使用指南

环境

node --version
v8.11.0

安装Rabbitmqamqplib

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容