RabbitMQ05-配置RabbitMQ
- 一般情况下,可以使用默认配置直接运行RabbitMQ。
- 配置RabbitMQ服务有三种方法:
- (1)环境变量(Enviroment Variables):RabbitMQ服务端参数可以通过环境变量进行配直。例如,节点名称、RabbitMQ配置文件的地址、节点内部通信的端口等。
- (2)配置文件(Configuration File):可以定义RabbitMQ服务和插件设直。例如,TCP监听的端口,以及其他网络相关的设置、内存限制、磁盘限制等。
- (3)运行时参数和策略(Runtime Parameters and Policies):可以在运行时定义集群层面的服务设置。
//检查节点上的有效配置 rabbitmq-diagnostics environment
1、环境变量
- RabbitMQ的rabbitmq-env.conf文件:https://www.rabbitmq.com/man/rabbitmq-env.conf.5.html#DESCRIPTION
- RabbitMQ可用的环境变量:https://www.rabbitmq.com/configure.html#supported-environment-variables
- 定义RabbitMQ的环境变量有两种方法:
- (1)在shell中设置,RabbitMQ的环境变量都是以"RABBITMQ_"开头的
- (2)在rabbitmq-env.conf文件中设置,RabbitMQ的环境变量需要将"RABBITMQ_"这个前缀去除。
- 优先级顺序按照shell的最优先,其次rabbitmq-env.conf配置文件,最后是默认的配置。
- 环境变量的默认值在\$RABBITMQ_HOME/sbin/rabbitmq-defaults文件中取。rabbitmq-defaults文件的内容如下所示:
#!/bin/sh -e ### next line potentially updated in package install steps SYS_PREFIX=${RABBITMQ_HOME} CLEAN_BOOT_FILE=start_clean SASL_BOOT_FILE=start_sasl BOOT_MODULE="rabbit" if test -z "$CONF_ENV_FILE" && test -z "$RABBITMQ_CONF_ENV_FILE"; then CONF_ENV_FILE=${SYS_PREFIX}/etc/rabbitmq/rabbitmq-env.conf fi
- 如果没有特殊的需求,不建议更改RabbitMQ的环境变量。如果在实际生产环境中,对于配量和日志的目录有着特殊的管理目录,那么可以参考以下相应的配置:
#配置文件的地址 CONFIG_FILE=/apps/conf/rabbitmq/rabbitmq #环境变量的配置文件的地址 CONF_ENV_FILE=/apps/conf/rabbitmq/rabbitmq-env.conf #服务日志的地址 LOG_BASE=/apps/logs/rabbitmq #Mnesia的路径 MNESIA_BA5E=/apps/date/rabbitmq/mnesia
示例1:
- 使用shell配置rabbitmq的环境变量
- 注意,如果先执行RABBITMQ_NODE_PORT=8888,再执行rabbitmq-server命令,相当于只执行rabbitmq-server命令,即对RABBITMQ_NODE_PORT的定义无效。
//将端口设置为8888,然后启动rabbitmq服务 ]# RABBITMQ_NODE_PORT=8888 rabbitmq-server //在另一个窗口查看启用的端口(端口应该是8888) ]# netstat -ntpl
示例2:
- 使用rabbitmq-env.conf文件配置rabbitmq的环境变量
//配置rabbitmq-env.conf ]# vim $RABBITMQ_HOME/etc/rabbitmq/rabbitmq-env.conf #定义RabbitMQ的对外通信端口号 NODE_PORT=8888 //启动rabbitmq服务 ]# rabbitmq-server //在另一个窗口查看启用的端口(端口应该是8888) ]# netstat -ntpl
2、配置文件
- RabbitMQ配置文件:https://www.rabbitmq.com/configure.html
- RabbitMQ配置文件的配置项:https://www.rabbitmq.com/configure.html#config-items
- 如果无特殊需要,不建议贸然修改这些配置项默认配置。
- RabbitMQ的配置文件有两种格式(注意两种文件的后缀):
- (1)从RabbitMQ 3.7.0之前,配置文件使用json格式。默认配置文件是\$RABBITMQ_HOME/etc/rabbitmq/rabbitmq.config。
- (2)从RabbitMQ 3.7.0开始,配置文件使用ini风格的格式。默认配置文件是\$RABBITMQ_HOME/etc/rabbitmq/rabbitmq.conf。
- 一行一个配置项
- 行是结构化的Key = Value
- 任何以#字符开头的行都是注释行
- 一个极简的rabbitmq.conf文件配置,将客户端连接的默认端口号从5672修改为8888。
- 有些配置项不能或难以使用ini风格进行配置,可以将这些配置项放在advanced.config文件中。
listeners.tcp.default = 8888
- 一个极简的rabbitmq.config文件配置,将客户端连接的默认端口号从5672修改为8888。(注意包含尾部的实心点)
[ { rabbit, [ {tcp_listeners, [8888]} ] } ].
- rabbitmq.conf.example文件
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
## This example configuration file demonstrates various settings ## available via rabbitmq.conf. It primarily focuses core broker settings ## but some tier 1 plugin settings are also covered. ## ## This file is AN EXAMPLE. It is NOT MEANT TO BE USED IN PRODUCTION. Instead of ## copying the entire (large!) file, create or generate a new rabbitmq.conf for the target system ## and populate it with the necessary settings. ## ## See https://rabbitmq.com/configure.html to learn about how to configure RabbitMQ, ## the ini-style format used by rabbitmq.conf, how it is different from `advanced.config`, ## how to verify effective configuration, and so on. ## ## See https://rabbitmq.com/documentation.html for the rest of RabbitMQ documentation. ## ## In case you have questions, please use RabbitMQ community Slack and the rabbitmq-users Google group ## instead of GitHub issues. # ====================================== # Core broker section # ====================================== ## Networking ## ==================== ## ## Related doc guide: https://rabbitmq.com/networking.html. ## ## By default, RabbitMQ will listen on all interfaces, using ## the standard (reserved) AMQP 0-9-1 and 1.0 port. ## # listeners.tcp.default = 5672 ## To listen on a specific interface, provide an IP address with port. ## For example, to listen only on localhost for both IPv4 and IPv6: ## # IPv4 # listeners.tcp.local = 127.0.0.1:5672 # IPv6 # listeners.tcp.local_v6 = ::1:5672 ## You can define multiple listeners using listener names # listeners.tcp.other_port = 5673 # listeners.tcp.other_ip = 10.10.10.10:5672 ## TLS listeners are configured in the same fashion as TCP listeners, ## including the option to control the choice of interface. ## # listeners.ssl.default = 5671 ## It is possible to disable regular TCP (non-TLS) listeners. Clients ## not configured to use TLS and the correct TLS-enabled port won't be able ## to connect to this node. # listeners.tcp = none ## Number of Erlang processes that will accept connections for the TCP ## and TLS listeners. ## # num_acceptors.tcp = 10 # num_acceptors.ssl = 10 ## Socket writer will force GC every so many bytes transferred. ## Default is 1 GiB (`1000000000`). Set to 'off' to disable. ## # socket_writer.gc_threshold = 1000000000 # ## To disable: # socket_writer.gc_threshold = off ## Maximum amount of time allowed for the AMQP 0-9-1 and AMQP 1.0 handshake ## (performed after socket connection and TLS handshake) to complete, in milliseconds. ## # handshake_timeout = 10000 ## Set to 'true' to perform reverse DNS lookups when accepting a ## connection. rabbitmqctl and management UI will then display hostnames ## instead of IP addresses. Default value is `false`. ## # reverse_dns_lookups = false ## ## Security, Access Control ## ============== ## ## Related doc guide: https://rabbitmq.com/access-control.html. ## The default "guest" user is only permitted to access the server ## via a loopback interface (e.g. localhost). ## {loopback_users, [<<"guest">>]}, ## # loopback_users.guest = true ## Uncomment the following line if you want to allow access to the ## guest user from anywhere on the network. # loopback_users.guest = false ## TLS configuration. ## ## Related doc guide: https://rabbitmq.com/ssl.html. ## # listeners.ssl.1 = 5671 # # ssl_options.verify = verify_peer # ssl_options.fail_if_no_peer_cert = false # ssl_options.cacertfile = /path/to/cacert.pem # ssl_options.certfile = /path/to/cert.pem # ssl_options.keyfile = /path/to/key.pem # # ssl_options.honor_cipher_order = true # ssl_options.honor_ecc_order = true # ## These are highly recommended for TLSv1.2 but cannot be used ## with TLSv1.3. If TLSv1.3 is enabled, these lines MUST be removed. # ssl_options.client_renegotiation = false # ssl_options.secure_renegotiate = true # ## Limits what TLS versions the server enables for client TLS ## connections. See https://www.rabbitmq.com/ssl.html#tls-versions for details. ## ## Cutting edge TLS version which requires recent client runtime ## versions and has no cipher suite in common with earlier TLS versions. # ssl_options.versions.1 = tlsv1.3 ## Enables TLSv1.2 for best compatibility # ssl_options.versions.2 = tlsv1.2 ## Older TLS versions have known vulnerabilities and are being phased out ## from wide use. ## Limits what cipher suites the server will use for client TLS ## connections. Narrowing this down can prevent some clients ## from connecting. ## If TLSv1.3 is enabled and cipher suites are overridden, TLSv1.3-specific ## cipher suites must also be explicitly enabled. ## See https://www.rabbitmq.com/ssl.html#cipher-suites and https://wiki.openssl.org/index.php/TLS1.3#Ciphersuites ## for details. # ## The example below uses TLSv1.3 cipher suites only # # ssl_options.ciphers.1 = TLS_AES_256_GCM_SHA384 # ssl_options.ciphers.2 = TLS_AES_128_GCM_SHA256 # ssl_options.ciphers.3 = TLS_CHACHA20_POLY1305_SHA256 # ssl_options.ciphers.4 = TLS_AES_128_CCM_SHA256 # ssl_options.ciphers.5 = TLS_AES_128_CCM_8_SHA256 # ## The example below uses TLSv1.2 cipher suites only # # ssl_options.ciphers.1 = ECDHE-ECDSA-AES256-GCM-SHA384 # ssl_options.ciphers.2 = ECDHE-RSA-AES256-GCM-SHA384 # ssl_options.ciphers.3 = ECDHE-ECDSA-AES256-SHA384 # ssl_options.ciphers.4 = ECDHE-RSA-AES256-SHA384 # ssl_options.ciphers.5 = ECDH-ECDSA-AES256-GCM-SHA384 # ssl_options.ciphers.6 = ECDH-RSA-AES256-GCM-SHA384 # ssl_options.ciphers.7 = ECDH-ECDSA-AES256-SHA384 # ssl_options.ciphers.8 = ECDH-RSA-AES256-SHA384 # ssl_options.ciphers.9 = DHE-RSA-AES256-GCM-SHA384 # ssl_options.ciphers.10 = DHE-DSS-AES256-GCM-SHA384 # ssl_options.ciphers.11 = DHE-RSA-AES256-SHA256 # ssl_options.ciphers.12 = DHE-DSS-AES256-SHA256 # ssl_options.ciphers.13 = ECDHE-ECDSA-AES128-GCM-SHA256 # ssl_options.ciphers.14 = ECDHE-RSA-AES128-GCM-SHA256 # ssl_options.ciphers.15 = ECDHE-ECDSA-AES128-SHA256 # ssl_options.ciphers.16 = ECDHE-RSA-AES128-SHA256 # ssl_options.ciphers.17 = ECDH-ECDSA-AES128-GCM-SHA256 # ssl_options.ciphers.18 = ECDH-RSA-AES128-GCM-SHA256 # ssl_options.ciphers.19 = ECDH-ECDSA-AES128-SHA256 # ssl_options.ciphers.20 = ECDH-RSA-AES128-SHA256 # ssl_options.ciphers.21 = DHE-RSA-AES128-GCM-SHA256 # ssl_options.ciphers.22 = DHE-DSS-AES128-GCM-SHA256 # ssl_options.ciphers.23 = DHE-RSA-AES128-SHA256 # ssl_options.ciphers.24 = DHE-DSS-AES128-SHA256 # ssl_options.ciphers.25 = ECDHE-ECDSA-AES256-SHA # ssl_options.ciphers.26 = ECDHE-RSA-AES256-SHA # ssl_options.ciphers.27 = DHE-RSA-AES256-SHA # ssl_options.ciphers.28 = DHE-DSS-AES256-SHA # ssl_options.ciphers.29 = ECDH-ECDSA-AES256-SHA # ssl_options.ciphers.30 = ECDH-RSA-AES256-SHA # ssl_options.ciphers.31 = ECDHE-ECDSA-AES128-SHA # ssl_options.ciphers.32 = ECDHE-RSA-AES128-SHA # ssl_options.ciphers.33 = DHE-RSA-AES128-SHA # ssl_options.ciphers.34 = DHE-DSS-AES128-SHA # ssl_options.ciphers.35 = ECDH-ECDSA-AES128-SHA # ssl_options.ciphers.36 = ECDH-RSA-AES128-SHA # ssl_options.bypass_pem_cache = true ## Select an authentication/authorisation backend to use. ## ## Alternative backends are provided by plugins, such as rabbitmq-auth-backend-ldap. ## ## NB: These settings require certain plugins to be enabled. ## ## Related doc guides: ## ## * https://rabbitmq.com/plugins.html ## * https://rabbitmq.com/access-control.html ## # auth_backends.1 = rabbit_auth_backend_internal ## uses separate backends for authentication and authorisation, ## see below. # auth_backends.1.authn = rabbit_auth_backend_ldap # auth_backends.1.authz = rabbit_auth_backend_internal ## The rabbitmq_auth_backend_ldap plugin allows the broker to ## perform authentication and authorisation by deferring to an ## external LDAP server. ## ## Relevant doc guides: ## ## * https://rabbitmq.com/ldap.html ## * https://rabbitmq.com/access-control.html ## ## uses LDAP for both authentication and authorisation # auth_backends.1 = rabbit_auth_backend_ldap ## uses HTTP service for both authentication and ## authorisation # auth_backends.1 = rabbit_auth_backend_http ## uses two backends in a chain: HTTP first, then internal # auth_backends.1 = rabbit_auth_backend_http # auth_backends.2 = rabbit_auth_backend_internal ## Authentication ## The built-in mechanisms are 'PLAIN', ## 'AMQPLAIN', and 'EXTERNAL' Additional mechanisms can be added via ## plugins. ## ## Related doc guide: https://rabbitmq.com/authentication.html. ## # auth_mechanisms.1 = PLAIN # auth_mechanisms.2 = AMQPLAIN ## The rabbitmq-auth-mechanism-ssl plugin makes it possible to ## authenticate a user based on the client's x509 (TLS) certificate. ## Related doc guide: https://rabbitmq.com/authentication.html. ## ## To use auth-mechanism-ssl, the EXTERNAL mechanism should ## be enabled: ## # auth_mechanisms.1 = PLAIN # auth_mechanisms.2 = AMQPLAIN # auth_mechanisms.3 = EXTERNAL ## To force x509 certificate-based authentication on all clients, ## exclude all other mechanisms (note: this will disable password-based ## authentication even for the management UI!): ## # auth_mechanisms.1 = EXTERNAL ## This pertains to both the rabbitmq-auth-mechanism-ssl plugin and ## STOMP ssl_cert_login configurations. See the RabbitMQ STOMP plugin ## configuration section later in this file and the README in ## https://github.com/rabbitmq/rabbitmq-auth-mechanism-ssl for further ## details. ## ## To use the TLS cert's CN instead of its DN as the username ## # ssl_cert_login_from = common_name ## TLS handshake timeout, in milliseconds. ## # ssl_handshake_timeout = 5000 ## Cluster name ## # cluster_name = dev3.eng.megacorp.local ## Password hashing implementation. Will only affect newly ## created users. To recalculate hash for an existing user ## it's necessary to update her password. ## ## To use SHA-512, set to rabbit_password_hashing_sha512. ## # password_hashing_module = rabbit_password_hashing_sha256 ## When importing definitions exported from versions earlier ## than 3.6.0, it is possible to go back to MD5 (only do this ## as a temporary measure!) by setting this to rabbit_password_hashing_md5. ## # password_hashing_module = rabbit_password_hashing_md5 ## ## Default User / VHost ## ==================== ## ## On first start RabbitMQ will create a vhost and a user. These ## config items control what gets created. ## Relevant doc guide: https://rabbitmq.com/access-control.html ## # default_vhost = / # default_user = guest # default_pass = guest # default_permissions.configure = .* # default_permissions.read = .* # default_permissions.write = .* ## Tags for default user ## ## For more details about tags, see the documentation for the ## Management Plugin at https://rabbitmq.com/management.html. ## # default_user_tags.administrator = true ## Define other tags like this: # default_user_tags.management = true # default_user_tags.custom_tag = true ## ## Additional network and protocol related configuration ## ===================================================== ## ## Set the server AMQP 0-9-1 heartbeat timeout in seconds. ## RabbitMQ nodes will send heartbeat frames at roughly ## the (timeout / 2) interval. Two missed heartbeats from ## a client will close its connection. ## ## Values lower than 6 seconds are very likely to produce ## false positives and are not recommended. ## ## Related doc guides: ## ## * https://rabbitmq.com/heartbeats.html ## * https://rabbitmq.com/networking.html ## # heartbeat = 60 ## Set the max permissible size of an AMQP frame (in bytes). ## # frame_max = 131072 ## Set the max frame size the server will accept before connection ## tuning occurs ## # initial_frame_max = 4096 ## Set the max permissible number of channels per connection. ## 0 means "no limit". ## # channel_max = 128 ## Customising TCP Listener (Socket) Configuration. ## ## Related doc guides: ## ## * https://rabbitmq.com/networking.html ## * https://www.erlang.org/doc/man/inet.html#setopts-2 ## # tcp_listen_options.backlog = 128 # tcp_listen_options.nodelay = true # tcp_listen_options.exit_on_close = false # # tcp_listen_options.keepalive = true # tcp_listen_options.send_timeout = 15000 # # tcp_listen_options.buffer = 196608 # tcp_listen_options.sndbuf = 196608 # tcp_listen_options.recbuf = 196608 ## ## Resource Limits & Flow Control ## ============================== ## ## Related doc guide: https://rabbitmq.com/memory.html. ## Memory-based Flow Control threshold. ## # vm_memory_high_watermark.relative = 0.4 ## Alternatively, we can set a limit (in bytes) of RAM used by the node. ## # vm_memory_high_watermark.absolute = 1073741824 ## Or you can set absolute value using memory units (with RabbitMQ 3.6.0+). ## Absolute watermark will be ignored if relative is defined! ## # vm_memory_high_watermark.absolute = 2GB ## ## Supported unit symbols: ## ## k, kiB: kibibytes (2^10 - 1,024 bytes) ## M, MiB: mebibytes (2^20 - 1,048,576 bytes) ## G, GiB: gibibytes (2^30 - 1,073,741,824 bytes) ## kB: kilobytes (10^3 - 1,000 bytes) ## MB: megabytes (10^6 - 1,000,000 bytes) ## GB: gigabytes (10^9 - 1,000,000,000 bytes) ## Fraction of the high watermark limit at which queues start to ## page message out to disc in order to free up memory. ## For example, when vm_memory_high_watermark is set to 0.4 and this value is set to 0.5, ## paging can begin as early as when 20% of total available RAM is used by the node. ## ## Values greater than 1.0 can be dangerous and should be used carefully. ## ## One alternative to this is to use durable queues and publish messages ## as persistent (delivery mode = 2). With this combination queues will ## move messages to disk much more rapidly. ## ## Another alternative is to configure queues to page all messages (both ## persistent and transient) to disk as quickly ## as possible, see https://rabbitmq.com/lazy-queues.html. ## # vm_memory_high_watermark_paging_ratio = 0.5 ## Selects Erlang VM memory consumption calculation strategy. Can be `allocated`, `rss` or `legacy` (aliased as `erlang`), ## Introduced in 3.6.11. `rss` is the default as of 3.6.12. ## See https://github.com/rabbitmq/rabbitmq-server/issues/1223 and rabbitmq/rabbitmq-common#224 for background. # vm_memory_calculation_strategy = rss ## Interval (in milliseconds) at which we perform the check of the memory ## levels against the watermarks. ## # memory_monitor_interval = 2500 ## The total memory available can be calculated from the OS resources ## - default option - or provided as a configuration parameter. # total_memory_available_override_value = 2GB ## Set disk free limit (in bytes). Once free disk space reaches this ## lower bound, a disk alarm will be set - see the documentation ## listed above for more details. ## ## Absolute watermark will be ignored if relative is defined! # disk_free_limit.absolute = 50000 ## Or you can set it using memory units (same as in vm_memory_high_watermark) ## with RabbitMQ 3.6.0+. # disk_free_limit.absolute = 500KB # disk_free_limit.absolute = 50mb # disk_free_limit.absolute = 5GB ## Alternatively, we can set a limit relative to total available RAM. ## ## Values lower than 1.0 can be dangerous and should be used carefully. # disk_free_limit.relative = 2.0 ## ## Clustering ## ===================== ## # cluster_partition_handling = ignore ## Pauses all nodes on the minority side of a partition. The cluster ## MUST have an odd number of nodes (3, 5, etc) # cluster_partition_handling = pause_minority ## pause_if_all_down strategy require additional configuration # cluster_partition_handling = pause_if_all_down ## Recover strategy. Can be either 'autoheal' or 'ignore' # cluster_partition_handling.pause_if_all_down.recover = ignore ## Node names to check # cluster_partition_handling.pause_if_all_down.nodes.1 = rabbit@localhost # cluster_partition_handling.pause_if_all_down.nodes.2 = hare@localhost ## Mirror sync batch size, in messages. Increasing this will speed ## up syncing but total batch size in bytes must not exceed 2 GiB. ## Available in RabbitMQ 3.6.0 or later. ## # mirroring_sync_batch_size = 4096 ## Make clustering happen *automatically* at startup. Only applied ## to nodes that have just been reset or started for the first time. ## ## Relevant doc guide: https://rabbitmq.com//cluster-formation.html ## # cluster_formation.peer_discovery_backend = rabbit_peer_discovery_classic_config # # cluster_formation.classic_config.nodes.1 = rabbit1@hostname # cluster_formation.classic_config.nodes.2 = rabbit2@hostname # cluster_formation.classic_config.nodes.3 = rabbit3@hostname # cluster_formation.classic_config.nodes.4 = rabbit4@hostname ## DNS-based peer discovery. This backend will list A records ## of the configured hostname and perform reverse lookups for ## the addresses returned. # cluster_formation.peer_discovery_backend = rabbit_peer_discovery_dns # cluster_formation.dns.hostname = discovery.eng.example.local ## This node's type can be configured. If you are not sure ## what node type to use, always use 'disc'. # cluster_formation.node_type = disc ## Interval (in milliseconds) at which we send keepalive messages ## to other cluster members. Note that this is not the same thing ## as net_ticktime; missed keepalive messages will not cause nodes ## to be considered down. ## # cluster_keepalive_interval = 10000 ## ## Statistics Collection ## ===================== ## ## Statistics collection interval (in milliseconds). Increasing ## this will reduce the load on management database. ## # collect_statistics_interval = 5000 ## Fine vs. coarse statistics # # This value is no longer meant to be configured directly. # # See https://www.rabbitmq.com/management.html#fine-stats. ## ## Ra Settings ## ===================== ## # raft.segment_max_entries = 65536 # raft.wal_max_size_bytes = 1048576 # raft.wal_max_batch_size = 4096 # raft.snapshot_chunk_size = 1000000 ## ## Misc/Advanced Options ## ===================== ## ## NB: Change these only if you understand what you are doing! ## ## Timeout used when waiting for Mnesia tables in a cluster to ## become available. ## # mnesia_table_loading_retry_timeout = 30000 ## Retries when waiting for Mnesia tables in the cluster startup. Note that ## this setting is not applied to Mnesia upgrades or node deletions. ## # mnesia_table_loading_retry_limit = 10 ## Size in bytes below which to embed messages in the queue index. ## Related doc guide: https://rabbitmq.com/persistence-conf.html ## # queue_index_embed_msgs_below = 4096 ## You can also set this size in memory units ## # queue_index_embed_msgs_below = 4kb ## Whether or not to enable background periodic forced GC runs for all ## Erlang processes on the node in "waiting" state. ## ## Disabling background GC may reduce latency for client operations, ## keeping it enabled may reduce median RAM usage by the binary heap ## (see https://www.erlang-solutions.com/blog/erlang-garbage-collector.html). ## ## Before trying this option, please take a look at the memory ## breakdown (https://www.rabbitmq.com/memory-use.html). ## # background_gc_enabled = false ## Target (desired) interval (in milliseconds) at which we run background GC. ## The actual interval will vary depending on how long it takes to execute ## the operation (can be higher than this interval). Values less than ## 30000 milliseconds are not recommended. ## # background_gc_target_interval = 60000 ## Whether or not to enable proxy protocol support. ## Once enabled, clients cannot directly connect to the broker ## anymore. They must connect through a load balancer that sends the ## proxy protocol header to the broker at connection time. ## This setting applies only to AMQP clients, other protocols ## like MQTT or STOMP have their own setting to enable proxy protocol. ## See the plugins documentation for more information. ## # proxy_protocol = false ## Overriden product name and version. ## They are set to
3、参数及策略
3.1、参数
- RabbitMQ绝大大多数的配置都可以通过修改rabbitrnq.conf配置文件来完成,但是其中有些配置并不太适合在rabbitrnq.conf中去实现。比如某项配置不需要同步到集群中的其他节点中,或者某项配置需要在运行时更改(rabbitrnq.conf需要重启Broker才能生效)。这种类型的配置在RabbitMQ中的另一种称呼为参数(Parameter),也可以称之为运行时参数(Runtime Parameter)。
- Parameter可以通过rabbitrnqctl工具或者RabbitMQ Management插件提供的HTTP API接口来设置。
- RabbitMQ中一共有两种类型的Parameter:vhost级别的Parameter和global级别的Parameter。
- vhost级别的Parameter由一个组件名称(component name)、名称(name)和值(value)组成。
- global级别的参数由一个名称和值组成。
- 不管是vhost级别还是global级别的参数,其所对应的值都是JSON类型的。
3.1.1、vhost级别参数
//设置vhost运行时参数 rabbitmqctl set_parameter [--vhost <vhost>] <component_name> <name> <value> <component_name>:组件名称 <name>:参数名称(标识符) <value>:参数值 //清除vhost运行时参数 rabbitmqctl clear_parameter [--vhost <vhost>] <component_name> <name> //列出vhost运行时参数 rabbitmqctl list_parameters [--vhost <vhost>]
3.1.2、global级别参数
//设置global运行时参数 rabbitmqctl set_global_parameter <name> <value> //清除global运行时参数 rabbitmqctl clear_global_parameter <name> //列出global运行时参数 rabbitmqctl list_global_parameters]
3.2、策略
- Policy是vhost级别的,是一种特殊的Parameter的用法。
- 一个Policy可以匹配一个或者多个队列(或者交换器,或者两者兼有),这样便于批量管理。Policy也可以支持动态地修改一些属性参数,大大地提高了应用的灵活度。
- 一般来说,Policy用来配置Federation、镜像、备份交换器、死信等功能。
//定义策略 rabbitmqctl set_policy [--vhost <vhost>] [--priority <priority>] [--apply-to <apply-to>] <name> <pattern> <definition> <vhost>:表示Policy定义在哪个vhost <priority>:优先级。如果有多个Policy作用于同一个交换器或者队列,那么Priority最大的那个Policy才会生效。 <apply-to>:用来指定Policy作用于哪一方。一共有三个选项"Exchanges and queues"表示作用于Pattern所匹配的所有队列和交换器;"Exchanges"表示作用于Pattern所匹配的所有交换器;"Queues"表示作用于Pattern所匹配的所有队列。 <name>:Policy的名字(标识符) <pattern>:一个正则表达式,用来匹配相关的队列或者交换器。 <definition>:策略定义(参数)。定义一组或者多组键值对,为匹配到的交换器或者队列附加相应的功能。(必须是一个有效的JSON文档) //清空策略 rabbitmqctl clear_policy [--vhost <vhost>] <name> //查看策略 rabbitmqctl [--quiet] list_policies [--vhost <vhost>]