首先說明一下,本人玩這個東西還不到兩天,只是試驗性的用了一下,不過感覺上還不錯。
rabbitmq是什么?
簡單來說,它就是一個消息隊列。我們可以用一個程序扔消息進去,然后可以在另一個程序獲取這個消息。
為何使用rabbitmq而不是用redis?
這個問題是一開始選擇使用rabbitmq的時候的一個糾結的地方,因為消息隊列,redis的隊列也可以實現。讓我決定使用rabbitmq的原因在于幾個點。
1. rabbitmq有一種應答機制,客戶端在接收到消息后要主動回應,消息才算處理了,不然下次重新獲取信息還會獲取回來。而redis用pop獲取信息后,信息就沒了。
2. 持久化,重啟服務消息還在。(當然redis也可以持久化)
3. 靈活的接收機制,多種接收模式。
安裝和簡單的命令
參考的網址:
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版管理界面默認使用賬號guest和密碼guest登陸,但是只允許本地訪問,為了遠程訪問,請在/etc/rabbitmq/rabbitmq.config文件加入[{rabbit, [{loopback_users, []}]}].
并且重啟rabbitmq
rabbitmq的一點點理解
有一個生產者源源不斷的生成消息扔到rabbitmq,有一個消費者源源不斷的從rabbitmq中獲取數據。而rabbitmq作為消息的傳遞者,使用交換器和隊列來實現消息傳遞。交換器負責把消息投遞到各個隊列,消費者在隊列等著消息過來就好。
rabbitmq肯定有更強大的功能,只是本人剛剛接觸,沒辦法挖掘核心部分,不過總的來說業務驅動技術,等有對應的需求再挖掘響應的功能也不遲。