RabbitMQ官網 http://www.rabbitmq.com
下載地址 http://www.rabbitmq.com/download.html
一 Windows下安裝RabbitMq
1.1 下載安裝包
1.1.1 下載RabbitMq
安裝參考 http://www.rabbitmq.com/install-windows.html
官網上說明,在windows上安裝rabbitmq-server時,需要先安裝Erlang Windows Binary File,如果Windows環境中曾經裝過32位的,現在要升級為64位的,必須先卸載。官網原話
If you have an existing installation and are planning to upgrade the Erlang VM from a 32bit to a 64bit version then you must uninstall the broker before upgrading the VM.
1.1.1 下載Erlang
Erlang 下載安裝地址 http://www.erlang.org/downloads
關於Erlang的介紹請參考文章
http://blog.csdn.net/zzhongcy/article/details/38823197
1.2 安裝Erlang
1.2.1 運行安裝
下載otp_win64_19.2.exe
運行安裝otp_win64_19.2.exe
1.2.2 修改環境變量
1) 添加系統環境變量ERLANG_HOME,值為安裝目錄.
2) 修改系統環境變量Path,在PATH變量中添加“%ERLANG_HOME%\bin”
3) 重啟電腦后,在控制台輸入 erl,如果出現類似“Eshell V6.1 (abort with ^G)”字樣,說明安裝成功。
**官方說明上沒有這塊,試了下,不設置環境變量也是可以運行RabbitMQ的**
1.3 安裝RabbitMq
1.3.1 運行安裝
下載rabbitmq-server-3.6.6.exeWindows版本
運行安裝rabbitmq-server-3.6.6.exe
1.3.2 運行服務
rabbitMq默認自啟動
可以修改rabbitmq的配置文件,也可以用默認配置運行。在開始菜單欄里可以看到運行指令reinstall/remove/start/stop
或者直接打開RabbitMQ Command Prompt命令框。
1.3.3 端口號訪問
當防火牆或者其他安全工具阻止RabbitMQ端口號綁定時,服務啟動會失敗。確保下列端口可以打開:
4369 (epmd)
5672, 5671 (AMQP 0-9-1 and 1.0 without and with TLS)
25672. This port used by Erlang distribution for inter-node and CLI tools communication and is allocated from a dynamic range (limited to a single port by default, computed as AMQP port + 20000). See networking guide for details.
15672 (if management plugin is enabled)
61613, 61614 (if STOMP is enabled)
1883, 8883 (if MQTT is enabled)
1.3.4 默認用戶訪問
該代理創建了一個默認的賬號“guest”密碼“guest”的訪問賬號。未配置的客戶端默認使用該賬號憑據,但僅限於訪問本地。如果是網絡訪問則需要另外配置。其他用戶訪問參考訪問控制文檔
1.3.5 管理服務
使用rabbitmqctl 管理服務,參見官方文檔
http://www.rabbitmq.com/man/rabbitmqctl.1.man.html
-n node 默認node名稱是"rabbit@server",如果你的主機是'server.example.com',那么node名是rabbit@server
-q 安靜輸出模式,信息會被禁止輸出
rabbitmqctl [-n node] [-t timeout] [-q] {command} [command options...]
1.3.5.1 基本管理功能
stop [<pid_file>]
#停止在erlang node上運行的rabbitmq,會使rabbitmq停止
stop_app
#停止erlang node上的rabbitmq的應用,但是erlang node還是會繼續運行的
start_app
#啟動erlan node上的rabbitmq的應用
wait <pid_file>
#等待rabbitmq服務啟動
reset
#初始化node狀態,會從集群中刪除該節點,從管理數據庫中刪除所有數據,例如vhosts等等。在初始化之前rabbitmq的應用必須先停止
force_reset
#無條件的初始化node狀態
rotate_logs <suffix>
#輪轉日志文件
1.3.5.2 cluster管理
join_cluster <clusternode> [--ram]
#clusternode表示node名稱,--ram表示node以ram node加入集群中。默認node以disc node加入集群,在一個node加入cluster之前,必須先停止該node的rabbitmq應用,即先執行stop_app。
cluster_status
#顯示cluster中的所有node
change_cluster_node_type disc | ram
#改變一個cluster中node的模式,該節點在轉換前必須先停止,不能把一個集群中唯一的disk node轉化為ram node
forget_cluster_node [--offline]
#遠程移除cluster中的一個node,前提是該node必須處於offline狀態,如果是online狀態,則需要加--offline參數。
update_cluster_nodes clusternode
#
sync_queue queue
#同步鏡像隊列
cancel_sync_queue queue
#
1.3.5.3 用戶管理
add_user <username> <password>
#在rabbitmq的內部數據庫添加用戶
delete_user <username>
#刪除一個用戶
change_password <username> <newpassword>
#改變用戶密碼 \\改變web管理登陸密碼
clear_password <username>
#清除用戶密碼,禁止用戶登錄
set_user_tags <username> <tag> ...
#設置用戶tags
list_users
#列出用戶
add_vhost <vhostpath>
#創建一個vhosts
delete_vhost <vhostpath>
#刪除一個vhosts
list_vhosts [<vhostinfoitem> ...]
#列出vhosts
set_permissions [-p <vhostpath>] <user> <conf> <write> <read>
#針對一個vhosts 給用戶賦予相關權限
clear_permissions [-p <vhostpath>] <username>
#清除一個用戶對vhosts的權限
list_permissions [-p <vhostpath>]
#列出哪些用戶可以訪問該vhosts
list_user_permissions <username>
#列出該用戶的訪問權限
set_parameter [-p <vhostpath>] <component_name> <name> <value>
#
clear_parameter [-p <vhostpath>] <component_name> <key>
#
list_parameters [-p <vhostpath>]
#
1.3.5.4 policy管理
policy管理,策略用來控制和修改queues和exchange在集群中的行為,策略可以應用到vhost
set_policy [-p <vhostpath>] [--priority <priority>] [--apply-to <apply-to>]
<name> <pattern> <definition>
#name 策略名稱,pattern 正則表達式,用來匹配資源,符合的就會應用設置的策略,apply-to 表示策略應用到什么類型的地方,一般有queues、exchange和all,默認是all。priority 是個整數優先級,definition 是json格式設置的策略。
clear_policy [-p <vhostpath>] <name>
#清除一個策略
list_policies [-p <vhostpath>]
#列出已有的策略
1.3.5.5 queue&exchange狀態信息
list_queues [-p <vhostpath>] [<queueinfoitem> ...]
#返回queue的信息,如果省略了-p參數,則默認顯示的是"/"vhosts的信息。
list_exchanges [-p <vhostpath>] [<exchangeinfoitem> ...]
#返回exchange的信息。
list_bindings [-p <vhostpath>] [<bindinginfoitem> ...]
#返回綁定信息。
list_connections [<connectioninfoitem> ...]
#返回鏈接信息。
list_channels [<channelinfoitem> ...]
#返回目前所有的channels。
list_consumers [-p <vhostpath>]
#返回consumers,
status
#顯示broker的狀態
environment
#顯示環境參數的信息
report
#返回一個服務狀態report,
eval <expr>
1.3.6 插件管理
rabbitmq支持各種插件,開啟插件可以使用rabbitmq-plugins命令
rabbitmq-plugins <command> [<command options>]
Commands:
list [-v] [-m] [-E] [-e] [<pattern>] 顯示所有的的插件。-v 顯示版本 -m 顯示名稱 -E 顯示明確已經開啟的 -e顯示明確的和暗中開啟的
enable <plugin> ... 開啟一個插件
disable <plugin> ... 關閉一個插件
如圖,啟動插件后重啟服務,在瀏覽器打開http://localhost:15672
登錄,用戶名密碼都是guest
1.3.7 服務日志
服務日志記錄在RABBITMQ_NODENAME.log,在文件夾RABBITMQ_LOG_BASE中。其他的日志記錄在RABBITMQ_NODENAME-sasl.log.
rabbitmqctl rotate_logs {stuffix}
指示RabbitMQ node循環日志文件.
RabbitMQ 中間件會將原來日志文件中的內容追加到原始名稱和后輟的日志文件中,然后再將原始日志文件內容復制到新創建的日志上。實際上,當前日志內容會移到以此后輟結尾的文件上。當目標文件不存在時,將會進行創建。如果不指定后輟,則不會發生循環,日志文件只是重新打開。
rabbitmqctl rotate_logs.1
此命令指示RabbitMQ node將日志文件的內容追加到新日志文件(文件名由原日志文件名和.1后輟構成)中。如. rabbit@mymachine.log.1 和 rabbit@mymachine-sasl.log.1. 最后, 日志會在原始位置恢復到新文件中.