『壹』 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協議!