‘壹’ rabbitmq命令和通过网页查看rabbit的消息队列
1:启动
service rabbitmq-server start
2:启用web管理界面
rabbitmq-plugins enable rabbitmq_management
3:创建用户并设置权限
不知道用户和密码的可以创建用户并设置权限然后登陆网页查看
rabbitmqctl add_user admin admin123
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin '.*' '.*' '.*'
4:登陆查看rabbit的消息状态
http://IP:15672/
5:其他命令
停止:service rabbitmq-server stop
启动:service rabbitmq-server start
查看状态:service rabbitmq-server status
查看状态
rabbitmqctl status
查看用户列表
rabbitmqctl list_users
‘贰’ 瀵逛簬NodeJS濡备綍镎崭綔娑堟伅阒熷垪RabbitMQ镄勫垎鏋
杩欑瘒鏂囩珷涓昏佷粙缁崭简鍏充簬瀵筃odeJS濡备綍镎崭綔娑堟伅阒熷垪RabbitMQ镄勫垎鏋愶纴链夌潃涓瀹氱殑鍙傝冧环鍊硷纴鐜板湪鍒嗕韩缁椤ぇ瀹讹纴链夐渶瑕佺殑链嫔弸鍙浠ュ弬钥冧竴涓
涓. 浠涔堟槸娑堟伅阒熷垪锛熸秷鎭锛圡essage锛夋槸鎸囧湪搴旂敤闂翠紶阃佺殑鏁版嵁銆傛秷鎭鍙浠ラ潪甯哥亩鍗曪纴姣斿傚彧鍖呭惈鏂囨湰瀛楃︿覆锛屼篃鍙浠ユ洿澶嶆潅锛屽彲鑳藉寘钖宓屽叆瀵硅薄銆
娑堟伅阒熷垪锛圡essage Queue锛夋槸涓绉嶅簲鐢ㄩ棿镄勯氢俊鏂瑰纺锛屾秷鎭鍙戦佸悗鍙浠ョ珛鍗宠繑锲烇纴鐢辨秷鎭绯荤粺𨱒ョ‘淇濇秷鎭镄勫彲闱犱紶阃掋傛秷鎭鍙戝竷钥呭彧绠℃妸娑堟伅鍙戝竷鍒 MQ 涓钥屼笉鐢ㄧ¤皝𨱒ュ彇锛屾秷鎭浣跨敤钥呭彧绠′粠 MQ 涓鍙栨秷鎭钥屼笉绠℃槸璋佸彂甯幂殑銆傝繖镙峰彂甯冭呭拰浣跨敤钥呴兘涓岖敤鐭ラ亾瀵规柟镄勫瓨鍦ㄣ
浜. 甯哥敤镄勬秷鎭阒熷垪链夊摢浜涳纻RabbitMQ銆丷ocketMQ銆丄ctiveMQ銆并afka銆乑eroMQ銆丮etaMq銆
鐢氲呖鐜板湪閮ㄥ垎NoSQL涔熷彲锅氭秷鎭阒熷垪锛屽俣edis銆
涓. 娑堟伅阒熷垪镄勪娇鐢ㄥ満鏅锛熷纾姝ュ勭悊搴旂敤瑙h︽祦閲忓墛宄板洓. 浣跨敤妗堜緥涓婅勬ā镄勫叕鍙搁兘浼氭湁镊宸辩殑镞ュ织鍒嗘瀽绯荤粺锛屾棩蹇楃郴缁熸槸镐庝箞瀹炵幇镄勫憿锛
锲捐В锛氱敤鎴峰湪璁块梾搴旂敤镄勬椂鍊欙纴鎴戜滑瑕佽板綍涓嬬敤鎴风殑镎崭綔璁板綍鍜岀郴缁熺殑寮傚父镞ュ织锛屽父瑙勭殑锅氭硶鏄灏嗙郴缁熶骇鐢熺殑镞ュ织淇濆瓨鍒版湇锷″櫒纾佺洏锛屽湪链嶅姟鍣ㄤ腑寮钖瀹氭椂浠诲姟锛屽畾镞跺皢纾佺洏镄勬棩蹇椾俊鎭浼犲叆mq涓锛堢敓浜ц咃级锛屼篃瀹氭椂灏唌q涓镄勬秷鎭鍙栧嚭骞跺瓨鍒扮浉搴旂殑鏁版嵁搴掳纴濡侲lasticSearch鎴朒ive涓銆
浜. 濡备綍瀹夎汇abbitMQ锛熶笂闱㈢殑妗堜緥浠嬬粛浜哅Q镄勪竴涓浣跨敤鍦烘櫙锛屾垜杩欓噷鏄鐢≧abbitMQ涓句緥锛岀幇瀹为”鐩涓鍙鑳界敤鍒扮殑鏄疜afka銆
棣栧厛瀹夎卋rew锛坢ac涓轰緥锛
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"瀹夎汇abbitMQ
brew install rabbitmq杩愯孯abbitMQ
杩涘叆鍒 /usr/local/Cellar/rabbitmq/3.7.7锛屾墽琛
sbin/rabbitmq-server钖锷ㄦ彃浠
杩涘叆鍒 /usr/local/Cellar/rabbitmq/3.7.7/sbin
./rabbitmq-plugins enable rabbitmq_management锏婚檰绠$悊鐣岄溃
镓揿紑娴忚埚櫒杈揿叆锛歨ttp://localhost:15672锛孯abbitMQ榛樿15672绔鍙e叚. Nodejs镎崭綔RabbitMQ
缃戜笂鍙浠ユ垒鍒板ソ鍑犱釜鐩稿簲镄凬ode SDK锛岃繖閲屾帹钻恒mqplib
1.鐢熶骇钥
/**
* 瀵筊abbitMQ镄勫皝瑁
*/
let amqp = require('amqplib');
class RabbitMQ {
constructor() {
this.hosts = [];
this.index = 0;
this.length = this.hosts.length;
this.open = amqp.connect(this.hosts[this.index]);
}
sendQueueMsg(queueName, msg, errCallBack) {
let self = this;
self.open
.then(function (conn) {
return conn.createChannel();
})
.then(function (channel) {
return channel.assertQueue(queueName).then(function (ok) {
return channel.sendToQueue(queueName, new Buffer(msg), {
persistent: true
});
})
.then(function (data) {
if (data) {
errCallBack && errCallBack("success");
channel.close();
}
})
.catch(function () {
setTimeout(() => {
if (channel) {
channel.close();
}
}, 500)
});
})
.catch(function () {
let num = self.index++;
if (num <= self.length - 1) {
self.open = amqp.connect(self.hosts[num]);
} else {
self.index == 0;
}
});
}
}2. 娑堣垂钥
/**
* 瀵筊abbitMQ镄勫皝瑁
*/
let amqp = require('amqplib');
class RabbitMQ {
constructor() {
this.open = amqp.connect(this.hosts[this.index]);
}
receiveQueueMsg(queueName, receiveCallBack, errCallBack) {
let self = this;
self.open
.then(function (conn) {
return conn.createChannel();
})
.then(function (channel) {
return channel.assertQueue(queueName)
.then(function (ok) {
return channel.consume(queueName, function (msg) {
if (msg !== null) {
let data = msg.content.toString();
channel.ack(msg);
receiveCallBack && receiveCallBack(data);
}
})
.finally(function () {
setTimeout(() => {
if (channel) {
channel.close();
}
}, 500)
});
})
})
.catch(function () {
let num = self.index++;
if (num <= self.length - 1) {
self.open = amqp.connect(self.hosts[num]);
} else {
self.index = 0;
self.open = amqp.connect(self.hosts[0]);
}
});
}3. 阃氲繃鐢熶骇钥呭悜MQ鍙戦佷竴涓娑堟伅锛屽苟鍒涘缓阒熷垪
let mq = new RabbitMQ();
mq.sendQueueMsg('testQueue', 'my first message', (error) => {
console.log(error)
})镓ц屼箣钖庯纴鎴戜滑镓揿紑绠$悊骞冲彴锛屽彂鐜癛abbbitMQ宸茬粡鎺ュ弹鍒颁简涓𨱒℃秷鎭锛
骞朵笖RabbbitMQ鏂板炰简涓涓阒熷垪testQueue
4. 銮峰彇鎸囧畾阒熷垪镄勬秷鎭
let mq = new RabbitMQ();
mq.receiveQueueMsg('testQueue',(msg) => {
console.log(msg)
})// 杈揿嚭缁撴灉锛歮y first message姝ゆ椂镓揿紑RabbitMQ绠$悊骞冲彴锛屾秷鎭鏁伴噺宸茬粡鍙树负0
缁间笂锛氭垜浠绠鍗曡茶堪浜嗘秷鎭阒熷垪鍙奟abbitMQ鐩稿叧镄勪竴浜涚煡璇嗭纴浠ュ强鎴戜滑濡备綍阃氲繃nodejs𨱒ョ敓浜т笌娑堣垂娑堟伅銆
‘叁’ 消息中间件——RabbitMQ(四)命令行与管控台的基本操作!
在前面的文章中我们介绍过RabbitMQ的搭建: RabbitMQ的安装过 以及各大主流消息中间件的对比: ,本章就主要来介绍下我们之前安装的管控台是如何使用以及如何通过命令行进行操作。
rabbitmqctl stop_app:关闭应用
rabbitmqctl start_app:启动应用
rabbtmqctl status:节点状态
rabbitmqctl add_user username password:添加用户
rabbitmqctl list_users:列出所有用户
rabbitmqctl delete_user username:删除用户
rabbitmqctl clear_permissions - p vhostpath username: 清除用户权限
rabbitmqctl list_user_permissions_username: 列出用户权限
rabbitmqctl change_password username newpassword:修改密码
rabbitmqctl set_permissions -p vhostpath username ". " ". " ".*" :设置用户权限
涉及的用户命令还有许多,这里就不一一列举了。
rabbitmqctl add_vhost vhostpath:创建虚拟主机
rabbitmqctl list_vhosts:列出所有虚拟主机
rabbitmqctl list_permissions -p vhostpath:列出虚拟主机上所有权限
rabbitmqctl delete_vhost vhostpath:删除虚拟主机
rabbitmqctl list_queues:查看所有队列信息
rabbitmqctl -p vhostpath purge_queue bule:清除队列里的消息
rabbitmqctl reset:移除所有数据,要在rabbitmqctl stop_app之后使用
rabbitmqctl join_clust <clusternode> [--ram]:组成集群命令
rabbitmqctl clustr_status:查看集群状态
rabbitmqctl change_cluster_node_type disc|ram 修改集群节点的存储形式
rabbitmqctl forget_cluster_node [--offline] 忘记节点(摘除节点)
rabbitmqctl rename_cluster_node oldnode1 newnode1 [oldnode2] [newnode2..] (修改节点名称)
登录RabbitMQ web管理界面: http://localhost:15672/
默认的初始用户名和密码为: guest
从图中可以看到:
Broker的属性
定义由 用户 , 虚拟主机 , 权限 , 参数 , 交换 , 队列 和 绑定 组成。 它们不包括队列的内容或集群名称。 独占队列不会被导出。
导入的定义将与当前定义合并。 如果在导入过程中发生错误,则所做的任何更改都不会回滚。
连接的属性
通道的属性
交换器属性
在Admin界面可以添加用户或者虚拟主机等操作。
参考文章:
https://www.cnblogs.com/theRhyme/p/10069611.html
https://jiahao..com/s?id=1608453370506467252&wfr=spider&for=pc
https://blog.csdn.net/weixin_34413802/article/details/91529866
推荐文章:
消息中间件——RabbitMQ(一)Windws/Linux环境搭建(完整版)
消息中间件——RabbitMQ(二)各大主流消息中间件综合对比介绍!
消息中间件——RabbitMQ(三)理解RabbitMQ核心概念和AMQP协议!