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 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有 ...
随机推荐
- 洛谷 P2858 [USACO06FEB]奶牛零食Treats for the Cows
题目描述 FJ has purchased N (1 <= N <= 2000) yummy treats for the cows who get money for giving va ...
- PHP函数---$_Get()和$_Post()的用法
一.$_Get()和$_Post()函数是用来传值的,即对应两种提交表单的方法,get和post. 二.$_Get方法 (1)获取通过URL的传值 Example 1 新建两个PHP文件,1.php, ...
- C++与UnrealScript脚本交互
转自:http://m.blog.csdn.net/blog/qweewqpkn/39932499 一.c++调用uc脚本中的函数 举例: 1. 在脚本MenuManager.uc文件中实现函数: e ...
- iOS :undefined symbols for architecture x86_64
转自:http://www.th7.cn/Program/IOS/201408/268371.shtml 问题描述:为了适配iPhone 5s的64位处理器,在编译选项中加入了arm64架构.但是发现 ...
- linux下如何使用Mysql
项目需要:Linux下链接数据库,并进行相关的查询操作 mySql的一些常用命令 启动:net start mySql; 进入:mysql -u root -p/mysql -h localhost ...
- Linux命令总结_命令执行顺序
有时候,我们需要一个命令执行完之后再去执行另一个命令,使用 &&和 ||可以完成 这样的功能,相应的命令可以是系统命令或shell脚本 Shell还提供了在当前shell或子shell ...
- nodejs安装使用express
1.用Express 应用程序生成器 express-generator 快速搭建express框架 1.1安装: npm install express-generator -g 1.2 生成目录: ...
- linux命令之grep,find
grep命令 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索 ...
- android studio 改包名
使用Android studio有一段时间了,但是每次修改包名的时候都是用一种简单粗暴的方式,那就是新建一个想要的包名,然后直接拖拽. 但是这样有个不好的地方就是每次都要去修改manifest.xml ...
- poj3186(区间dp)
题目链接:http://poj.org/problem?id=3186 题意:给一行n个数,每次可以取出行首或者行末的数,如果第ai是第i次取出的,可以得到ai*i的收益,求最大的总收益: 思路:区间 ...