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);
})
});
})
})
初学,简单测试,理解不深,可能有潜在问题
node-amqp 使用fanout发布订阅rabbitmq消息的更多相关文章
- RabbitMQ学习系列三:.net 环境下 C#代码订阅 RabbitMQ 消息并处理
上一篇已经讲了Rabbitmq如何在Windows平台安装 不懂请移步: RabbitMQ学习系列二:.net 环境下 C#代码使用 RabbitMQ 消息队列 一.理论 .net环境下,C#代码订阅 ...
- Kafka 分布式的,基于发布/订阅的消息系统
Kafka是一种分布式的,基于发布/订阅的消息系统.主要设计目标如下: 通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能. 高吞吐量:即使是非常 ...
- kafka高吞吐量的分布式发布订阅的消息队列系统
一:kafka介绍kafka(官网地址:http://kafka.apache.org)是一种高吞吐量的分布式发布订阅的消息队列系统,具有高性能和高吞吐率. 1.1 术语介绍BrokerKafka集群 ...
- Publisher/Subscriber(发布/订阅者)消息模式开发流程
该模式的作用是发布者和订阅者 可以相互发送消息 发布者和订阅者都充当 生产者和消费者 发布者 package publisher.to.subscriber; import java.awt.font ...
- rabbitMq及安装、fanout交换机-分发(发布/订阅)
<dependency> <groupId>com.rabbitmq</groupId> <artifactId& ...
- redis实现消息队列&发布/订阅模式使用
在项目中用到了redis作为缓存,再学习了ActiveMq之后想着用redis实现简单的消息队列,下面做记录. Redis的列表类型键可以用来实现队列,并且支持阻塞式读取,可以很容易的实现一个高性 ...
- RabbitMQ 消息队列 应用
安装参考 详细介绍 学习参考 RabbitMQ 消息队列 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. M ...
- RabbitMQ 消息模式
消息模式实例 视频教程:https://ke.qq.com/course/304104 编写代码前,最好先添加好用户并设置virtual hosts 一.简单模式 1.导入jar包 <depen ...
- RabbitMQ消息队列1: Detailed Introduction 详细介绍
1. 历史 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有 ...
随机推荐
- 洛谷P2530 [SHOI2001]化工厂装箱员
题目描述 118号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的锎成品可能会有3种不同的纯度,A:100%,B:1%,C:0.01%,为了出售方便,必须把不 ...
- python反复执行某个命令
#! /usr/bin/env python #coding=utf-8 # 以需要的时间间隔执行某个命令 import time, os def re_exe(cmd, inc = 60 ...
- AtCoder Grand Contest 009 E:Eternal Average
题目传送门:https://agc009.contest.atcoder.jp/tasks/agc009_e 题目翻译 纸上写了\(N\)个\(1\)和\(M\)个\(0\),你每次可以选择\(k\) ...
- Spring boot 学习 四:spring boot 配置文件 application.yml
一 关于端口: spring boot的默认端口是8080, 如果想更改的话,在配置文件中做如下配置.ServerProperties.class会去读取这个值. server: port: 另外一种 ...
- java 发邮件 代码
/** * java发送带附件的邮件 * 周枫 * 2013.8.10 */ package com.dsideal.Util; import javax.mail.*; import javax.m ...
- eclipse(java) 使用SQL …
java连接sqlserver2005数据库 首先得下载驱动程序到微软网站下载Microsoft JDBC Driver 4.0 for SQL Server 下载地址 :http://msdn. ...
- Ubuntu下CodeBlocks更改调试终端
Ubuntu下CodeBlocks更改调试终端 Ubuntu下的CodeBlocks自带的调试终端xterm不能进行复制粘贴操作,更换调试终端就可以解决了,就是把ubuntu下的gnome-ter ...
- wireshark里无网络接口解决办法
管理员模式下开启npf服务,该服务能捕获网络接口,net start npf
- 模块 DLL C:\WINDOWS\system32\inetsrv\aspnetcore.dll 未能加载。返回的数据为错误信息。
更新了win10的版本后,就启动原来的iis发布的程序 程序池就自动关闭.后来 启动网站 iis程序池自动关闭. 在为应用程序池“.NET v4.5”提供服务的工作进程“21908”中,协议“http ...
- 小程序与Spring项目数据交互
上一篇博客刚说了利用Postman来测试Spring Boot项目,测试通过后就可以和小程序进行交互了. 首先要在微信开发者工具里面,点击"详情",勾选上"不校验合法域名 ...