首先說明一下掺喻,本人玩這個東西還不到兩天芭届,只是試驗性的用了一下,不過感覺上還不錯感耙。
rabbitmq是什么褂乍?
簡單來說,它就是一個消息隊列即硼。我們可以用一個程序扔消息進去逃片,然后可以在另一個程序獲取這個消息。
為何使用rabbitmq而不是用redis只酥?
這個問題是一開始選擇使用rabbitmq的時候的一個糾結(jié)的地方褥实,因為消息隊列,redis的隊列也可以實現(xiàn)裂允。讓我決定使用rabbitmq的原因在于幾個點损离。
1. rabbitmq有一種應(yīng)答機制,客戶端在接收到消息后要主動回應(yīng)绝编,消息才算處理了草冈,不然下次重新獲取信息還會獲取回來。而redis用pop獲取信息后瓮增,信息就沒了怎棱。
2. 持久化,重啟服務(wù)消息還在绷跑。(當(dāng)然redis也可以持久化)
3. 靈活的接收機制拳恋,多種接收模式。
安裝和簡單的命令
參考的網(wǎng)址:
https://www.erlang-solutions.com/resources/download.html
https://packagecloud.io/rabbitmq/rabbitmq-server/install
https://github.com/rabbitmq/chef-cookbook/issues/189#issuecomment-69878404
我是用docker砸捏,鏡像是centos7測試的谬运。
第一步,安裝erlang
wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
rpm --import https://packages.erlang-solutions.com/rpm/erlang_solutions.asc
yum install epel-release
第二部垦藏,安裝rabbitmq
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | /bin/bash
yum install rabbitmq-server
啟動rabbitmq
rabbitmq-server start
停止rabbitmq
rabbitmqctl stop
列出rabbitmq的插件
rabbitmq-plugins list -v
啟動一個插件(以rabbitmq的web版管理插件為例梆暖,啟動后可以通過http://127.0.0.1:15672訪問管理,添加插件要重啟rabbitmq)
rabbitmq-plugins enable rabbitmq_management
注意web版管理界面默認(rèn)使用賬號guest和密碼guest登陸掂骏,但是只允許本地訪問轰驳,為了遠程訪問,請在/etc/rabbitmq/rabbitmq.config文件加入[{rabbit, [{loopback_users, []}]}].
并且重啟rabbitmq
rabbitmq的一點點理解
有一個生產(chǎn)者源源不斷的生成消息扔到rabbitmq弟灼,有一個消費者源源不斷的從rabbitmq中獲取數(shù)據(jù)级解。而rabbitmq作為消息的傳遞者,使用交換器和隊列來實現(xiàn)消息傳遞田绑。交換器負(fù)責(zé)把消息投遞到各個隊列勤哗,消費者在隊列等著消息過來就好。
rabbitmq肯定有更強大的功能掩驱,只是本人剛剛接觸芒划,沒辦法挖掘核心部分,不過總的來說業(yè)務(wù)驅(qū)動技術(shù)欧穴,等有對應(yīng)的需求再挖掘響應(yīng)的功能也不遲民逼。