RabbitMQ支持三種配置方式:html
1) 讀取環境變量中配置, 這包括shell中環境變量和rabbitmq-env.conf/rabbitmq-env-conf.bat文件中配置的環境變量node
可配置如端口、配置文件指定自定義位置、節點名字等信息。shell
2) 讀取配置文件rabbitmq.config數據庫
可配置權限、集羣、插件設置等高級信息, 固然也可配置端口等簡單信息windows
3) 經過運行命令時指定參數緩存
一般用來配置集羣範圍信息, 用來運行時動態傳入服務器
環境變量讀取優先級網絡
1) 讀取shell中環境變量框架
2) 讀取rabbitmq-env.conf/rabbitmq-env-conf.bat中的dom
3) 讀取默認的
rabbitmq-env.conf/rabbitmq-env-conf.bat 詳解(顏色標註的爲經常使用配置)
變量名稱 | 默認值 | 描述 |
---|---|---|
RABBITMQ_NODE_IP_ADDRESS | 默認爲空字符串, 即綁定全部網絡接口 | 若是想綁定到一個固定的IP可使用此變量. 若是要綁定到兩個或兩個以上只能經過rabbitmq.config中的tcp_listeners來設置。 |
RABBITMQ_NODE_PORT | 5672 | 供客戶端創建鏈接端口 |
RABBITMQ_DIST_PORT | RABBITMQ_NODE_PORT + 20000 | 用於節點和CLI工具鏈接的端口, 若是rabbitmq.config中配置了kernel.inet_dist_listen_min 或 kernel.inet_dist_listen_max該參數將被忽略 |
RABBITMQ_NODENAME |
|
節點名字, 必須惟一 |
RABBITMQ_CONF_ENV_FILE |
|
rabbitmq-env.conf/rabbitmq-env-conf.bat 默認位置, 不一樣系統不一樣安裝方式位置也不一樣, 若是默認位置沒找到則需在該位置手動建立一個 |
RABBITMQ_CONFIG_FILE | 同上 |
rabbitmq.config 默認位置。 若是默認位置沒找到則需在該位置手動建立一個 |
RABBITMQ_USE_LONGNAME | 官網沒說。。。。應該是false。。。 | 取值: true 或 false。 若是配置爲true, 這將致使RabbitMQ使用徹底限定的名稱來標識節點 |
RABBITMQ_SERVICENAME | Windows Service: RabbitMQ | 服務名稱 |
RABBITMQ_CONSOLE_LOG | 只在控制檯輸出日誌, 日誌不會持久化到文件 | 取值: new 或 reuse。 兩種取值都是將控制檯輸出從服務器重定向到名爲%rabbitmqservicename%(上面那個變量)的文件。 1)默認: 不設置, 控制檯的日誌不會被持久化到文件 2)new: 每次啓動時都會建立一個新的文件 3)reuse: 每次啓動服務器都會重用該日誌文件 |
RABBITMQ_CTL_ERL_ARGS | None | 在調用rabbitmqctl時使用的erl命令的參數。應該僅用於調試目的。 |
RABBITMQ_SERVER_ERL_ARGS |
|
在調用RabbitMQ服務器時使用的erl命令的標準參數, 應該僅用於調試目的 |
RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS |
|
在調用RabbitMQ服務器時使用的erl命令的附加參數。這個變量的值被附加到參數的默認列表(RABBITMQ_SERVER_ERL_ARGS). |
RABBITMQ_SERVER_START_ARGS | None | 在調用RabbitMQ服務器時使用的erl命令的額外參數。這不會覆蓋RABBITMQ_SERVER_ERL_ARGS. |
HOSTNAME |
|
當前機器名稱 |
COMPUTERNAME | Windows: localhost | 當前機器名稱, windows使用該變量 |
ERLANG_SERVICE_MANAGER_PATH | Windows Service: %ERLANG_HOME%\erts-x.x.x\bin | erlsrv.exe的路徑, erlsrv.exe這個是erlang服務的包裝腳本 |
rabbitmq.config詳解(核心配置)
該配置文件使用的是Erlang標準配置文件,語法請參照這裏
例:
[ {rabbit, [{tcp_listeners, [5673]}]} ].
key | 描述 |
---|---|
tcp_listeners | 監聽AMQP鏈接的端口或主機/對。 Default: [5672] |
num_tcp_acceptors | Erlang進程的數量,接受TCP監聽器的鏈接數。 Default: 10 |
handshake_timeout | 對AMQP 0-8/0-9/0-9-1握手的最大時間(在套接字鏈接和SSL握手以後),以毫秒爲間隔 Default: 10000 |
ssl_listeners | 如上所述,用於SSL鏈接。 Default: [] |
num_ssl_acceptors | 用於接受SSL監聽鏈接的Erlang進程的數量。 Default: 1 |
ssl_options | SSL配置參數. 詳情請看 SSL documentation. Default: [] |
ssl_handshake_timeout | SSL握手超時,以毫秒爲間隔。 Default: 5000 |
vm_memory_high_watermark | 觸發流控制的內存閾值。詳情請看 memory-based flow control. Default: 0.4 |
vm_memory_high_watermark_paging_ratio | 設置當內存使用超過總內存百分比多少時,隊列開始將消息持久化到磁盤以釋放內存。 詳情請看 memory-based flow control. Default: 0.5 |
disk_free_limit | RabbitMQ存儲數據的分區的磁盤空間限制。當可用的磁盤空間低於這個限制時,就會觸發流控制。值能夠相對於RAM的總數設置(例如,內存比例,1.0)。該值也能夠設置爲整數的字節數。或者,單位(例如「50 mb」)。默認狀況下,空閒磁盤空間必須超過50MB。詳情請看 Disk Alarms. Default: 50000000 |
log_levels | 控制日誌的粒度。該值是一個日誌事件類別和日誌級別對的列表。 可設置級別: 'none' 'error' 'warning' 'info' 'debug' 以上下一層級別的日誌輸出均包含上層級別日誌輸出(如: warning包含warning和error), none爲不輸出日誌
另外,當前未分類的事件老是記錄在日誌中 The categories are:
Default: [{connection, info}] |
frame_max | 框架最大容許大小(以字節爲單位)與消費者進行數據交換。設置爲0意味着「無限」,但會在一些QPid客戶端觸發一個bug。 設置更大的值可能會提升吞吐量; 設置較小的值可能會提升延遲。 Default: 131072 |
channel_max | 與消費者進行談判的最大容許數量。設置爲0意味着「無限」。 使用更多的通道會增長代理的內存佔用。 Default: 0 |
channel_operation_timeout | 通道操做超時爲毫秒(內部使用,因爲消息傳遞協議的差別和限制而不直接暴露於客戶機)。 Default: 15000 |
heartbeat | 該值表示服務器在鏈接中發送的心跳延遲,在幾秒鐘內。優化框架。若是設置爲0,則會禁用心跳。客戶端可能不會遵循服務器的建議,請參閱AMQP參考以瞭解更多細節。 在有大量鏈接的狀況下,禁用心跳可能改善性能,但可能會致使鏈接在關閉非活動鏈接的網絡設備的出現。 Default: 60 (580 prior to release 3.5.5) |
default_vhost | 當RabbitMQ建立一個新的數據庫時,建立一個虛擬主機。交換amq.rabbitmq.logwill存在於這個虛擬主機中。 Default: <<"/">> |
default_user | 當RabbitMQ從頭建立一個新數據庫時,要建立用戶名。 Default: <<"guest">> |
default_pass | 默認用戶的密碼。 Default: <<"guest">> |
default_user_tags | 默認用戶的標記。 Default: [administrator] |
default_permissions | 在建立時分配給默認用戶的權限。 Default: [<<".*">>, <<".*">>, <<".*">>] |
loopback_users | 只容許經過環回接口鏈接到代理的用戶列表(即localhost)。 若是您但願容許缺省的來賓用戶遠程鏈接,則須要將其更改成 []. Default: [<<"guest">>] |
cluster_nodes | 當一個節點開始第一次啓動時,將它設置爲使集羣自動發生。元組的第一個元素是節點試圖集羣到的節點。第二個元素是磁盤或ram,並肯定節點類型。 Default: {[], disc} |
server_properties | 鍵值對的列表,在鏈接上向客戶端宣佈。 Default: [] |
collect_statistics | 統計數據收集模式。主要與管理插件有關。選項有:
Default: none |
collect_statistics_interval | 統計數據收集間隔以毫秒爲間隔。 主要相關插件 management plugin. Default: 5000 |
management_db_cache_multiplier | 管理插件將緩存諸如隊列清單之類的代價較高的查詢的時間。緩存將把最後一個查詢的運行時間乘以這個值,並在此時間內緩存結果。 Default: 5 |
auth_mechanisms | SASL authentication mechanisms to offer to clients. Default: ['PLAIN', 'AMQPLAIN'] |
auth_backends | List of authentication and authorisation backends to use. Other databases than rabbit_auth_backend_internalare available through plugins. Default: [rabbit_auth_backend_internal] |
reverse_dns_lookups | 設置爲true,讓RabbitMQ對客戶端鏈接執行反向DNS查找,並經過rabbitmqctl和管理插件呈現該信息。 Default: false |
delegate_count | 用於集羣內部通訊的委託進程的數量。當爲多核CPU時能夠考慮設置該值 Default: 16 |
trace_vhosts | Used internally by the tracer. 一般狀況下不須要設置該參數 Default: [] |
tcp_listen_options | 默認的套接字選項。一般狀況下不須要設置該參數 Default: [{backlog, 128},
{nodelay, true},
{linger, {true,0}}, {exit_on_close, false}]
|
hipe_compile | 設置爲true,使用HiPE預編譯RabbitMQ的部分,這是Erlang的即時編譯器。這將增長服務器的吞吐量,以增長啓動時間的成本。 您可能會看到,在啓動時延遲幾分鐘,您的性能會提升20-50%。這些數據是高度工做負載和硬件依賴的。 HiPE支持可能不會編譯到您的Erlang安裝中。若是不是這樣,啓用這個選項只會致使一個警告消息被顯示,而啓動將照常進行。例如,Debian/Ubuntu用戶須要安裝erlangbase-base-hipe包。 HiPE在某些平臺上是不可用的,尤爲是Windows。 HiPE在17.5以前就已經知道了erlangp/otp版本的問題。HiPE推薦使用最新的erlangp/otp版本 Default: false |
cluster_partition_handling | 如何處理網絡分區。可用模式:
Default: ignore |
cluster_keepalive_interval | 節點應該多頻繁地將keepalive消息發送到其餘節點(以毫秒爲單位)。請注意,這與netticktime不同; 錯過的keepalive消息不會致使節點被認爲掛機。 Default: 10000 |
queue_index_embed_msgs_below | 在消息的字節數中,消息將被直接嵌入到隊列索引中。詳情請看 persister tuning Default: 4096 |
msg_store_index_module | 用於隊列索引的實現模塊。 詳情請看 persister tuning Default: rabbit_msg_store_ets_index |
backing_queue_module | 隊列內容的實現模塊。一般狀況下不須要設置該參數 Default: rabbit_variable_queue |
msg_store_file_size_limit | Tunable value for the persister. 一般狀況下不須要設置該參數 Default: 16777216 |
mnesia_table_loading_retry_limit | 在等待集羣中的Mnesia tables可用時,須要重試的次數。 Default: 10 |
mnesia_table_loading_retry_timeout | 在集羣中等待每一個重試的時間,以即可用 Default: 30000 |
queue_index_max_ journal_entries | Tunable value for the persister. 一般狀況下不須要設置該參數 Default: 65536 |
queue_master_locator | Queue master定位策略 可用策略:
Default: <<"client-local">> |
lazy_queue_explicit_gc_run_operation_threshold | 調優: 只有在內存壓力下有延遲隊列時。 這是觸發垃圾收集器和其餘內存減小活動的閾值。一個低的值能夠下降性能,一個高的值能夠提升性能,可是會致使更高的內存消耗。一般狀況下不須要設置該參數 Default: 1000 |
queue_explicit_gc_run_operation_threshold | 調優: 在內存壓力較大時。 這是觸發垃圾收集器和其餘內存減小活動的閾值。一個低的值能夠下降性能,一個高的值能夠提升性能,可是會致使更高的內存消耗。一般狀況下不須要設置該參數 Default: 1000 |