• node-amqp 使用fanout发布订阅rabbitmq消息


    publisher代码

    const amqp = require('amqp');
    
    let option = {
        host: 'server-ip',
        port: 5672,
        login: 'guest',
        password: 'guest',
        connectionTimeout: 10000,
        authMechanism: 'AMQPLAIN',
        vhost: '/',
        noDelay: true,
        ssl: {
            enabled: false
        }
    }
    const connection = amqp.createConnection(option);
    
    connection.on('error',function(e){
        console.log("Error from amqp: ", e);
    })
    let default_exchange = {};
    connection.on('ready', function(){
        default_exchange = connection.exchange('fans',{type:'fanout'}); //创建 fanout 类型的交换机
        let q = connection.queue('my-queue');
        q.bind(default_exchange,'my-queue');
        
        let qq = connection.queue('qqq');
        qq.bind(default_exchange, 'qqq');
        setInterval(publish_message, 2000);
    })
    
    let count= 0;
    publish_message = function() {
        let message = {
          hello: 'world',
          time: Date.now(),
          count: count++
        };
        default_exchange.publish('', message);
        return console.log("my-queue message published: " + (JSON.stringify(message)) + " to queue: my-queue");
      }; 
    

      receiver1 代码

    const amqp = require('amqp');
    
    let option = {
        host: 'server-ip',
        port: 5672,
        login: 'guest',
        password: 'guest',
        connectionTimeout: 10000,
        authMechanism: 'AMQPLAIN',
        vhost: '/',
        noDelay: true,
        ssl: {
            enabled: false
        }
    }
    const connection = amqp.createConnection(option);
    
    connection.on('error',function(e){
        console.log("Error from amqp: ", e);
    })
    
    connection.on('ready', function(){
        connection.queue('my-queue', function(q){
            console.log('my-queue is already subscribing');
            q.bind('logs','my-queue', function(){
                q.subscribe(function(message){
                    console.log('----receiveMessage: ',message);
                })
            });
        })
    })

    receiver2 代码

    const amqp = require('amqp');
    
    let option = {
        host: 'server-ip',
        port: 5672,
        login: 'guest',
        password: 'guest',
        connectionTimeout: 10000,
        authMechanism: 'AMQPLAIN',
        vhost: '/',
        noDelay: true,
        ssl: {
            enabled: false
        }
    }
    const connection = amqp.createConnection(option);
    
    connection.on('error',function(e){
        console.log("Error from amqp: ", e);
    })
    connection.on('ready', function(){
        connection.queue('qqq', function(q){
            console.log('my-queue is already subscribing');
            q.bind('fans','qqq',function(){
                q.subscribe(function(message){
                    console.log('----receiveMessage: ',message);
                })
            });
        })
    })

    初学,简单测试,理解不深,可能有潜在问题

  • 相关阅读:
    Ext.js给form加背景图片
    Linux安装Scala
    idea 无法创建Scala class 选项解决办法汇总
    idea 无法创建Scala class 选项解决办法汇总
    i++和++i的区别,及其线程安全问题
    java面试题
    大数据学习——scala入门程序
    大数据学习——spark安装
    大数据学习——kafka+storm+hdfs整合
    大数据学习——日志监控告警系统
  • 原文地址:https://www.cnblogs.com/lc-ant/p/9259240.html
Copyright © 2020-2023  润新知