自從微軟開源之後,自己也意識到微軟的改變,進而去了解在開源社群有哪些替代性的工具,RabbitMQ 是我拿來準備成為 Microsoft Message Queue 的另一個替代方案,這邊記錄一下整個安裝的過程。
RabbitMQ 不只有 Message Queuing 的功能,根據官網 Tutorials 的介紹還可以做到下列事情:
- Work queues: Distributing tasks among workers
- Publish/Subscribe: Sending messages to many consumers at once
- Routing: Receiving messages selectively
- Topics: Receiving messages based on a pattern
- RPC: Remote procedure call implementation
安裝相關工具
由於 CentOS 我都是從最小安裝開始,所以有一些工具在最小安裝是沒有裝進去的,要自己先安裝起來。
#Install required tools
yum -y install net-tools wget
安裝 Erlang
這是 RabbitMQ 相依的套件,可以從 RabbitMQ 官網上取得,直接安裝所提供的最新版本。
#Install Erlang
rpm -ivh http://www.rabbitmq.com/releases/erlang/erlang-17.4-1.el6.x86_64.rpm
安裝 RabbitMQ
直接安裝官網所提供的最新版本
#Install RabbitMQ
rpm -ivh http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.0/rabbitmq-server-3.6.0-1.noarch.rpm
安裝完畢後,可以下這行指令 chkconfig --list
確認服務有正確安裝成功。
開啟防火牆埠號
需開啟的防火牆埠號有下列這幾個,請視需求開啟,沒用到的不要開,以免造成資安問題。
- 4369 (epmd), 25672 (Erlang distribution)
- 5672, 5671 (AMQP 0-9-1 without and with TLS)
- 15672 (if management plugin is enabled)
- 61613, 61614 (if STOMP is enabled)
- 1883, 8883 (if MQTT is enabled)
我只有開啟 4369, 25672, 5672, 5671, 15672。
# Add allow ports
firewall-cmd --permanent --add-port=4369/tcp
firewall-cmd --permanent --add-port=25672/tcp
firewall-cmd --permanent --add-port=5672/tcp
firewall-cmd --permanent --add-port=5671/tcp
firewall-cmd --permanent --add-port=15672/tcp
firewall-cmd --reload
將 RabbitMQ 設為背景啟動
#Set RabbitMQ is started as a daemon
systemctl enable rabbit-server
啟動 RabbitMQ
#Start RabbitMQ service
systemctl start rabbit-server
可以透過 systemctl status rabbit-server
來確認服務有正確啟動
啟動 RabbitMQ 的管理套件
RabbitMQ 自帶一個 Web 的管理套件,預設是沒有啟動的,要啟動它很簡單。
#Enable Rabbit Management Plugin
rabbitmq-plugins enable rabbitmq_management
在瀏覽器打上 http://[ip 或伺服器名稱]:15672
就可以看到登入畫面。
新增另外一個 Administrator
不過,這時候我們照著官網上所說的用 guest 這個預設的管理帳號(密碼也是 guest) 是登不進去的,會 Login failed。
我之前將 RabbitMQ 裝在 Windows 時,必須要瀏覽 http://localhost:15762
才登得進去,因此猜想 guest 這個帳號只有在本地端才有辦法操作,所以我們必須增加另一個管理者帳號。
#Add another administrator
rabbitmqctl add_user administrator administratorpassword
#Set administrator user tag
rabbitmqctl set_user_tags administrator administrator
#Set administrator permissions
rabbitmqctl set_permissions -p / administrator ".*" ".*" ".*"
新增完後,用新增加的管理者帳號登入,就可以了。