日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Rabbitmq - 配置

發布時間:2023/12/2 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Rabbitmq - 配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • RabbitMQ 配置
    • 簡介
    • 環境變量
    • 配置文件
    • 運行時參數和策略

RabbitMQ 配置

簡介

默認配置,已經可以有效地運行RabbitMQ,并且在大多數情況下不需要更改配置。不過為了在生產環境中穩定、高效的運行,RabbitMQ提供了三種方式來定制化服務

  • 環境變量
  • 配置文件
  • 運行時參數和策略



配置文件路徑可以再啟動日志中找到

2019-05-24 01:55:19.253 [info] <0.8.0> Log file opened with Lager 2019-05-24 01:55:19.752 [info] <0.289.0> Starting RabbitMQ 3.7.15 on Erlang 22.0Copyright (C) 2007-2019 Pivotal Software, Inc.Licensed under the MPL. See https://www.rabbitmq.com/ 2019-05-24 01:55:19.753 [info] <0.289.0> node : rabbit@node1home dir : /rootconfig file(s) : (none)cookie hash : d/zE3xrt478dueqdlI+ZiA==log(s) : /opt/rabbitmq_server-3.7.15/var/log/rabbitmq/rabbit@node1.log: /opt/rabbitmq_server-3.7.15/var/log/rabbitmq/rabbit@node1_upgrade.logdatabase dir : /opt/rabbitmq_server-3.7.15/var/lib/rabbitmq/mnesia/rabbit@node1 2019-05-24 01:55:20.262 [info] <0.289.0> Running boot step pre_boot defined by app rabbit

期待的配置文件路徑
文件不存在可以手動創建

  • Generic UNIX: $RABBITMQ_HOME/etc/rabbitmq/
  • RPM: /etc/rabbitmq/
  • Windows: %APPDATA%\RabbitMQ

如何檢查生效的配置項

[root@node1 rabbitmq]# rabbitmqctl environment

環境變量

RabbitMQ的環境變量都是以"RABBITMQ_"開頭的,可以再shell環境中設置,也可以在rabbitmq-env.conf配置文件中設置。
如果在非shell環境中設置需要將“RABBITMQ_”去掉。

配置優先級

  • shell環境
  • rabbitmq-env.conf配置文件
  • 默認的配置
  • rabbitmq-env.conf默認在$RABBITMQ_HOME/etc/rabbitmq/目錄下,也可以在啟動時指定RABBITMQ_CONF_ENV_FILE變量來設置此文件的路徑

    # Example rabbitmq-env.conf file entries. Note that the variables # do not have the RABBITMQ_ prefix. # # Overrides node name NODENAME=root@node1# Specifies new style config file location CONFIG_FILE=/etc/rabbitmq/rabbitmq.conf# Specifies advanced config file location ADVANCED_CONFIG_FILE=/etc/rabbitmq/advanced.config 配置項描述默認
    RABBITMQ_NODE_IP_ADDRESS綁定的網絡接口默認為空字符串表示綁定本機所有的網絡接口
    RABBITMQ_NODE_PORT5672
    RABBITMQ_DIST_PORTRabbitMQ節點內部通信的端口號。如果設置了kernel.inet_dist_listen_min or kernel.inet_dist_listen_max時,此環境變量將被忽略RABBITMQ_NODE_PORT + 20000
    RABBITMQ_DISTRIBUTION_BUFFER_SIZE節點之間通信連接的數據緩沖區大小默認為128000,該值建議不要使用低于64MB
    RABBITMQ_IO_THREAD_POOL_SIZE運行時用于io的線程數建議不要低于32,linux默認為128 ,windows默認為64
    RABBITMQ_NODENAMErabbitmq節點名稱,集群中要注意節點名稱唯一linux 默認節點名為 rabbit@$hostname
    RABBITMQ_CONFIG_FILErabbitmq 的配置文件路徑,注意不要加文件的后綴(.conf)默認 $RABBITMQ_HOME/etc/rabbitmq/rabbitmq(二進制安裝) /etc/rabbitmq/rabbitmq(rpm 安裝)
    RABBITMQ_ADVANCED_CONFIG_FILEadvanced.config文件路徑默認 $RABBITMQ_HOME/etc/rabbitmq/advanced(二進制安裝) /etc/rabbitmq/advanced(rpm 安裝)
    RABBITMQ_CONF_ENV_FILE環境變量配置文件路徑默認 $RABBITMQ_HOME/etc/rabbitmq/rabbitmq-env.conf(二進制安裝) /etc/rabbitmq/rabbitmq-env.conf(rpm 安裝)
    RABBITMQ_USE_LONGNAME
    RABBITMQ_SERVICENAME

    配置文件

    在RabbitMQ3.7.0Z之前,RabbitMQ配置文件被命名為rabbitmq.config,并使用Erlang語法配置。
    運行3.7.0或更高版本仍然支持之前的配置,但建議使用新的sysctl格式。

    sysctl格式與erlang格式配置文件對比

    sysctl 格式ssl_options.cacertfile = /path/to/testca/cacert.pem ssl_options.certfile = /path/to/server_certificate.pem ssl_options.keyfile = /path/to/server_key.pem ssl_options.verify = verify_peer ssl_options.fail_if_no_peer_cert = true Erlang 格式 [{rabbit, [{ssl_options, [{cacertfile, "/path/to/testca/cacert.pem"},{certfile, "/path/to/server_certificate.pem"},{keyfile, "/path/to/server_key.pem"},{verify, verify_peer},{fail_if_no_peer_cert, true}]}]} ].
    • sysctl 格式易于自動化部署工具生成和人類編輯
    • 相對于Erlang格式 有局限。一些使用深度嵌套的數據結構仍然需要Erlang格式的支持

    rabbitmq.conf

    • key/value 鍵值對結構
    • 以#開頭的為注釋行
    • rabbitmq.conf 示例
    配置項描述默認值
    listeners要監聽 AMQP 0-9-1 and AMQP 1.0 的端口listeners.tcp.default = 5672
    num_acceptors.tcp接受tcp連接的erlang 進程數num_acceptors.tcp = 10
    handshake_timeoutAMQP 0-9-1 超時時間,也就是最大的連接時間,單位毫秒handshake_timeout = 10000
    listeners.ssl啟用TLS的協議默認值為none
    num_acceptors.ssl接受基于TLS協議的連接的erlang 進程數num_acceptors.ssl = 10
    ssl_optionsTLS 配置ssl_options =none
    ssl_handshake_timeoutTLS 連接超時時間 單位為毫秒ssl_handshake_timeout = 5000
    vm_memory_high_watermark觸發流量控制的內存閾值,可以為相對值(0.5),或者絕對值 vm_memory_high_watermark.relative = 0.6 ,vm_memory_high_watermark.absolute = 2GB默認vm_memory_high_watermark.relative = 0.4
    vm_memory_calculation_strategy內存使用報告策略,assigned:使用Erlang內存分配器統計信息
    rss:使用操作系統RSS內存報告。這使用特定于操作系統的方法,并可能啟動短期子進程。
    legacy:使用遺留內存報告(運行時認為將使用多少內存)。這種策略相當不準確。erlang 與legacy一樣 是為了向后兼容
    vm_memory_calculation_strategy = allocated
    vm_memory_high_watermark_paging_ratio內存高水位百分比閾值,當內存的使用達到閾值時,隊列開始將消息分頁到磁盤以釋放內存vm_memory_high_watermark_paging_ratio = 0.5
    total_memory_available_override_value該參數用于指定系統的可用內存總量,一般不使用,適用于在容器等一些獲取內存實際值不精確的環境(獲取內存值與實際內存值相差較大)默認未設置
    disk_free_limit存儲數據分區的可用磁盤空間限制當可用空間低于閾值時,流控將被觸發。disk_free_limit.absolute = 50MB
    log.file.level控制記錄日志的等級,有info,error,warning,debuglog.file.level = info
    channel_max最大通道數,但不包含協議中使用的特殊通道號0,設置為0表示無限制,不建議使用該值,容易出現channel泄漏,過多的channel會增加broker內存的占用channel_max = 2047
    channel_operation_timeout通道操作超時,單位為毫秒channel_operation_timeout = 15000
    heartbeat表示連接參數協商期間服務器建議的心跳超時的值。如果兩端都設置為0,則禁用心跳,不建議禁用heartbeat = 60
    default_vhostrabbitmq安裝后啟動創建的虛擬主機default_vhost = /
    default_user默認創建的用戶名default_user = guest
    default_pass默認用戶的密碼default_pass = guest
    default_user_tags默認用戶的角色default_user_tags.administrator = true
    default_permissions創建默認用戶時分配的權限default_permissions.configure = .* default_permissions.read = .* default_permissions.write = .*
    loopback_users允許通過回環地址連接到rabbitmq的用戶列表,如果要允許guest用戶遠程連接(不安全)請將該值設置為none,如果要將一個用戶設置為僅localhost連接的話,配置loopback_users.username =true(username要替換成用戶名)
    限制用戶只能本地連接loopback_users.monitoring = true
    monitoring是用戶名
    loopback_users.guest = true(默認guest只能本地連接)
    cluster_formation.classic_config.nodes配置集群節點
    cluster_formation.classic_config.nodes.1 = rabbit@hostname1
    cluster_formation.classic_config.nodes.2 = rabbit@hostname2
    默認none
    collect_statistics統計數據的收集模式,主要與 RabbitMQ Management插件相關,
    none: 不發出統計信息事件
    coarse: 每個隊列連接都發送統計一次
    fine: 每發一條消息的統計數據
    collect_statistics = none
    collect_statistics_interval統計數據收集時間間隔,以毫秒為單位collect_statistics_interval = 5000
    management_db_cache_multiplier緩存代價較高的查詢 緩存將把最后一個查詢的運行時間乘以這個值,并在此時間內緩存結果。management_db_cache_multiplier = 5
    reverse_dns_lookups設置為' true ',讓RabbitMQ對客戶端連接執行反向DNS查詢,并通過' rabbitmqctl '和管理插件顯示該信息。reverse_dns_lookups = false
    delegate_count用于集群內通信的委托進程數。在多核的服務器上我們可以增加此值delegate_count = 16
    tcp_listen_options默認的套接字選項tcp_listen_options.backlog = 128
    tcp_listen_options.nodelay = true
    tcp_listen_options.linger.on = true
    tcp_listen_options.linger.timeout = 0
    tcp_listen_options.exit_on_close = false
    hipe_compile設置為true以使用HiPE預編譯RabbitMQ的部分,HiPE是Erlang的即時編譯器,啟用HiPE可以提高吞吐,但啟動時會延遲幾分鐘。Erlang運行時必須包含HiPE支持。如果不是,啟用此選項將不起作用。HiPE在某些平臺上根本不可用,尤其是Windows。hipe_compile = false
    cluster_partition_handling如何處理網絡分區。有四種方式 ignore、autoheal、pause_minority、pause_if_all_down 。 pause_if_all_down模式需要額外的參數:nodes、recovercluster_partition_handling = ignore
    cluster_keepalive_interval向其他節點發送存活消息的頻率。單位為毫秒。丟失存活消息不會導致節點被認為已失效cluster_keepalive_interval = 10000
    queue_index_embed_msgs_below消息的字節大小,小于該大小,消息將直接嵌入隊列索引中 單位為Bqueue_index_embed_msgs_below = 4096
    mnesia_table_loading_retry_timeout等待集群中Mnesia表可用的超時時間,單位毫秒mnesia_table_loading_retry_timeout = 30000
    mnesia_table_loading_retry_limit集群啟動時等待Mnesia表的重試次數,不適用于Mnesia升級或節點刪除mnesia_table_loading_retry_limit = 10
    mirroring_sync_batch_size要在隊列鏡像之間同步的消息的批處理大小mirroring_sync_batch_size = 4096
    queue_master_locator隊列的定位的策略,即創建隊列時以什么策略判斷坐落的broker節點。如果配置了鏡像,則這里指master鏡像的定位策略。可用的策略 min-masters,client-local,randomqueue_master_locator = client-local
    proxy_protocol如果設置為true ,則連接需要通過反向代理連接,不能直連接proxy_protocol = false

    advanced.config

    一些不能使用sysctl格式的配置項或者使用sysctl格式不方便的配置項,可以使用Erlang術語格式的配置文件

    • advanced.config 示例
    配置項描述默認值
    msg_store_index_module設置隊列索引使用的模塊消息存儲調優 Default: rabbit_msg_store_ets_index
    {rabbit,[{msg_store_index_module, rabbit_msg_store_ets_index}]}
    backing_queue_module隊列內容的實現模塊。{rabbit, [{backing_queue_module, rabbit_variable_queue}]}
    msg_store_file_size_limit消息儲存的文件大小,現有的節點更改是危險的,可能導致數據丟失Default: 16777216
    {rabbit, [
    %% Changing this for a node
    %% with an existing (initialised) database is dangerous can
    %% lead to data loss!
    {msg_store_file_size_limit, 16777216}
    ]}
    trace_vhosts內部的tracer使用,不建議更改{rabbit, [
    {trace_vhosts, []}
    ]}
    msg_store_credit_disc_bound設置消息儲存庫給隊列進程的積分,默認一個隊列進程被賦予4000個消息積分{rabbit, [
    {msg_store_credit_disc_bound, {4000, 800}}
    ]}
    queue_index_max_journal_entries隊列的索引日志超過該閾值將刷新到磁盤{rabbit, [
    {queue_index_max_journal_entries, 32768}
    ]}
    lazy_queue_explicit_gc_run_operation_threshold在使用惰性隊列(lazy queue)時進行內存回收動作的閾值。值底性能降低,值高性能提高,但是會導致更高的內存消耗。{rabbit, [
    {lazy_queue_explicit_gc_run_operation_threshold, 1000}
    ]}
    queue_explicit_gc_run_operation_threshold在使用正常隊列時進行內存回收動作的閾值。值低降低性能,值高性能提高,但是會消耗更多的內存。{rabbit, [
    {queue_explicit_gc_run_operation_threshold, 1000}
    ]}

    運行時參數和策略

    rabbitmq中大部分配置都可以在配置文件中完成,重啟后生效,但有些配置不適合寫在配置文件中
    比如:有些需要更改需要立即生效

    Parameter可以通過rabbitmqctl或者管理插件提供的HTTP API來設置。

    Parameter分為兩種

    • vhost級別
      • 綁定到vhost。由組件名稱(component name)、名稱(name)和值組成
    • global級別
      • 不綁定vhost,全局生效。由名稱和值組成

    未完待續

    參考
    ?RabbitMQ官網 https://www.rabbitmq.com/
    《RabbitMQ實戰指南》
    ?RabbitMQ生產部署指南 https://www.cnblogs.com/operationhome/p/10483840.html

    轉載于:https://www.cnblogs.com/mldblue/articles/10939276.html

    總結

    以上是生活随笔為你收集整理的Rabbitmq - 配置的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。