精华内容
下载资源
问答
  • rabbitmq参数配置

    千次阅读 2019-06-26 22:35:46
    环境变量设置 如: 节点名称,rabbitmq配置文件地址, 节点内部通讯端口等 配置文件 如: 端口, ip, 网络,内存等 运行时参数和策略 在运行时设置 rabbitmqctl environment 输出当前节点上正在运行的rabbitmq、...

    rabbittmq配置修改:

    1. 环境变量设置 如: 节点名称,rabbitmq配置文件地址, 节点内部通讯端口等
    2. 配置文件 如: 端口, ip, 网络,内存等
    3. 运行时参数和策略 在运行时设置

    rabbitmqctl environment

    输出当前节点上正在运行的rabbitmq、plugins和libraries已应用的有效配置

    环境变量配置都是使用RABBITMQ_ 开头, 例如:

    Name Default
    RABBITMQ_NODE_IP_ADDRESS r若为空,则表示绑定到0.0.0.0
    RABBITMQ_NODE_PORT 5672
    RABBITMQ_DIST_PORT RABBITMQ_NODE_PORT + 20000
    RABBITMQ_NODENAME rabbit@$HOSTNAME
    RABBITMQ_CONF_ENV_FILE $RABBITMQ_HOME/etc/rabbitmq/rabbitmq-env.conf RPM安装: /etc/rabbitmq/rabbitmq-env.conf
    RABBITMQ_USE_LONGNAME

    rabbitmq.config配置文件

    配置文件详情可以参考官网

    https://www.rabbitmq.com/configure.html
    
    Key Documentation
    tcp_listeners 默认: [5672]
    num_tcp_acceptors 处理tcp连接的erlang进程数目.默认: 10
    handshake_timeout 握手超时时间,单位毫秒.默认: 10000
    ssl_listeners ssl配置.Default: []
    num_ssl_acceptors 处理ssl连接的erlang进程数目, Default: 1
    ssl_options ssl配置.Default: []
    ssl_handshake_timeout ssl握手超时,单位毫秒.Default: 5000
    vm_memory_high_watermark l流量控制的内存使用阈值.Default: 0.4
    vm_memory_calculation_strategy n内存使用报告方式, 1. rss 使用操作系统rss内存报告 2. erlang 采用erlang内存报告 默认rss
    vm_memory_high_watermark_paging_ratio 内存高水位的百分比阈值, 当达到阈值,队列将消息持久化到磁盘,以降低内存使用, 与vm_memory_high_watermark一起使用
    total_memory_available_override_value Default: undefined (not used)使重写可用内存总量成为可能,而不是使用特定于os的方法从环境中推断可用内存总量。只有当节点可用RAM的实际最大数量与节点推断出的值不匹配时,才应该使用这种方法,例如,由于容器化或节点不知道的类似约束。该值可以设置为整数字节数,也可以设置为信息单元(e.g “8GB”)。例如,当该值设置为4GB时,节点将认为它运行在一台具有4GB RAM的机器上。
    disk_free_limit Disk free space limit of the partition on which RabbitMQ is storing data. When available disk space falls below this limit, flow control is triggered. The value may be set relative to the total amount of RAM (e.g. {mem_relative, 1.0}). The value may also be set to an integer number of bytes. Or, alternatively, in information units (e.g “50MB”). By default free disk space must exceed 50MB. See the Disk Alarms documentation.Default: 50000000
    log_levels Controls the granularity(粒度) of logging. The value is a list of log event category and log level pairs.The level can be one of ‘none’ (no events are logged), ‘error’ (only errors are logged), ‘warning’ (only errors and warning are logged), ‘info’ (errors, warnings and informational messages are logged), or ‘debug’ (errors, warnings, informational messages and debugging messages are logged).At present there are four categories defined. Other, currently uncategorised, events are always logged.The categories are:channel - for all events relating to AMQP channelsconnection - for all events relating to network connectionsfederation - for all events relating to federationmirroring - for all events relating to mirrored queuesDefault: [{connection, info}]
    frame_max 与客户端协商的允许最大帧大小,单位B, Default: 131072
    channel_max 与客户端协商的允许最大信道channel个数, 0表示没有限制 .Default: 0
    channel_operation_timeout 信道运行超时时间, 单位毫秒.Default: 15000
    heartbeat 服务器与客服端连接的心跳延迟, 单位秒, 设置为0 则表示禁用心跳.Default: 60
    default_vhost 默认vhost.Default: <<"/">>
    default_user Default: <<“guest”>>
    default_pass Default: <<“guest”>>
    default_user_tags Default: [administrator]
    default_permissions .Default: [<<".">>, <<".">>, <<".*">>]
    loopback_users 设置只能本地访问broker的用户列表Default: [<<“guest”>>]
    cluster_nodes 配置集群, 雷子只能是disc或者是ram.Default: {[], disc}, 默认为disc磁盘类型节点
    server_properties List of key-value pairs to announce to clients on connection.Default: []
    collect_statistics Statistics collection mode. Primarily relevant for the management plugin. Options are:none (do not emit statistics events)coarse (emit per-queue / per-channel / per-connection statistics)fine (also emit per-message statistics)You probably don’t want to change this yourself.Default: none
    collect_statistics_interval Statistics collection interval in milliseconds. Primarily relevant for the management plugin.Default: 5000
    management_db_cache_multiplier Affects the amount of time the management plugin will cache expensive management queries such as queue listings. The cache will multiply the elapsed time of the last query by this value and cache the result for this amount of time.Default: 5
    auth_mechanisms 向客户端提供的SASL身份验证机制。Default: [‘PLAIN’, ‘AMQPLAIN’]
    auth_backends List of authentication and authorisation backends to use.*要使用的身份验证和授权后端列表。*Other databases than rabbit_auth_backend_internal are available through plugins. *rabbit_auth_backend_internal之外的其他数据库可以通过插件获得。*Default: [rabbit_auth_backend_internal]
    reverse_dns_lookups 设置为true,使RabbitMQ对客户端连接执行反向DNS查询,并通过rabbitmqctl和管理插件显示该信息。Default: false
    delegate_count Number of delegate processes to use for intra-cluster communication. On a machine which has a very large number of cores and is also part of a cluster, you may wish to increase this value.Default: 16
    trace_vhosts Used internally by the tracer. You shouldn’t change this.Default: []
    tcp_listen_options Default socket options. You probably don’t want to change this.Default:[{backlog, 128}, {nodelay, true}, {linger, {true,0}}, {exit_on_close, false}]
    hipe_compile 开启erlang的即时编译器,启动会增加延时,当性能能够提升
    cluster_partition_handling 处理网络分区的方式.Default: ignore
    cluster_keepalive_interval How frequently nodes should send keepalive messages to other nodes (in milliseconds). Note that this is not the same thing as net_ticktime; missed keepalive messages will not cause nodes to be considered down.Default: 10000
    queue_index_embed_msgs_below 消息的大小小于该值则直接嵌入到队列索引中, 单位B, Default: 4096
    msg_store_index_module Implementation module for queue indexing. You are advised to read the persister tuning documentation before changing this.Default: rabbit_msg_store_ets_index
    backing_queue_module Implementation module for queue contents. You probably don’t want to change this.Default: rabbit_variable_queue
    msg_store_file_size_limit Tunable value for the persister. You almost certainly should not change this.Default: 16777216
    msg_store_credit_disc_bound 此值仅在将消息持久化到message store时生效。如果消息嵌入到队列索引中,则修改此设置没有效果,因为写入队列索引时不使用credit_flow。Default: {4000, 800}
    mnesia_table_loading_retry_limit Number of times to retry while waiting for Mnesia tables in a cluster to become available.Default: 10
    mnesia_table_loading_retry_timeout Time to wait per retry for Mnesia tables in a cluster to become available.Default: 30000
    queue_index_max_ journal_entries Tunable value for the persister. You almost certainly should not change this.Default: 65536
    queue_master_locator 队列定位策略, 即创建队列以什么策略判断在哪个broker节点, Default: <<“client-local”>>
    mirroring_sync_batch_size 要在队列镜像之间同步的消息的批处理大小,请参见批处理同步,Default: 4096
    lazy_queue_explicit_ gc_run_operation_threshold 惰性队列进行内存回收动作的阈值, Default: 1000
    queue_explicit_ gc_run_operation_threshold 使用正常队列时进行内存回收动作的阈值,低的值会降低性能, 高的值性能高,但是内存消耗更多.Default: 1000

    加密配置:

    加密值必须在Erlang内部 encrypted 元组:{encrypted, …}

    例如:

    [
      {rabbit, [
          {default_user, <<"guest">>},
          {default_pass,
            {encrypted,
             <<"cPAymwqmMnbPXXRVqVzpxJdrS8mHEKuo2V+3vt1u/fymexD9oztQ2G/oJ4PAaSb2c5N/hRJ2aqP/X0VAfx8xOQ==">>
            }
          },
          {config_entry_decoder, [
                 {passphrase, <<"mypassphrase">>}
             ]}
        ]}
    ].
    

    优化网络配置:

    网络优化是为量提高吞吐量, 比如禁用nagle算法,增大tcp缓冲区大小, 在linux中,默认会自动调整tcp大小,通常在80kb - 120kb 可以使用rabbitmq.tcp_listen_options 调整配置

    rabbitmq需要系统确保有足够的文件句柄数来支持客户端与broker的交互

    rabbitmq parameter 运行时参数

    有vhost parameter 还有 global parameter 所对应的的值都是json类型的

    rabbitmqctl set_parameter  set_parameter [-p <vhostpath>] <component_name> <name> <value>
    rabbitmqctl list_parameters  [-p <vhostpath>]
    rabbitmqctl clear_parameter clear_parameter [-p <vhostpath>] <component_name> <key>
    

    设置policy

     rabbitmqctl  set_policy [-p <vhostpath>] [--priority <priority>] [--apply-to <apply-to>] 
     rabbitmqctl  clear_policy [-p <vhostpath>] <name>
    
    展开全文
  • Spring-RabbitMq 参数配置详解

    千次阅读 多人点赞 2019-07-31 14:28:50
    spring.rabbitmq.host: 默认localhost spring.rabbitmq.port: 默认5672 spring.rabbitmq.username: 用户名 spring.rabbitmq.password: 密码 spring.rabbitmq.virtual-host: 连接到代理时用的虚拟主机 spring....

    1.基础信息

    spring.rabbitmq.host: 默认localhost
    spring.rabbitmq.port: 默认5672
    spring.rabbitmq.username: 用户名
    spring.rabbitmq.password: 密码
    spring.rabbitmq.virtual-host: 连接到代理时用的虚拟主机
    spring.rabbitmq.addresses: 连接到server的地址列表(以逗号分隔),先addresses后host 
    spring.rabbitmq.requested-heartbeat: 请求心跳超时时间,0为不指定,如果不指定时间单位默认为妙
    spring.rabbitmq.publisher-confirms: 是否启用【发布确认】,默认false
    spring.rabbitmq.publisher-returns: 是否启用【发布返回】,默认false
    spring.rabbitmq.connection-timeout: 连接超时时间,单位毫秒,0表示永不超时 
    

    2. SSL

    spring.rabbitmq.ssl.enabled: 是否支持ssl,默认false
    spring.rabbitmq.ssl.key-store: 持有SSL certificate的key store的路径
    spring.rabbitmq.ssl.key-store-password: 访问key store的密码
    spring.rabbitmq.ssl.trust-store: 持有SSL certificates的Trust store
    spring.rabbitmq.ssl.trust-store-password: 访问trust store的密码
    spring.rabbitmq.ssl.trust-store-type=JKS:Trust store 类型.
    spring.rabbitmq.ssl.algorithm: ssl使用的算法,默认由rabiitClient配置
    spring.rabbitmq.ssl.validate-server-certificate=true:是否启用服务端证书验证
    spring.rabbitmq.ssl.verify-hostname=true 是否启用主机验证
    

    3. 缓存cache

    spring.rabbitmq.cache.channel.size: 缓存中保持的channel数量
    spring.rabbitmq.cache.channel.checkout-timeout: 当缓存数量被设置时,从缓存中获取一个channel的超时时间,单位毫秒;如果为0,则总是创建一个新channel
    spring.rabbitmq.cache.connection.size: 缓存的channel数,只有是CONNECTION模式时生效
    spring.rabbitmq.cache.connection.mode=channel: 连接工厂缓存模式:channel 和 connection
    

    4. Listener

    spring.rabbitmq.listener.type=simple: 容器类型.simple或direct
    
    spring.rabbitmq.listener.simple.auto-startup=true: 是否启动时自动启动容器
    spring.rabbitmq.listener.simple.acknowledge-mode: 表示消息确认方式,其有三种配置方式,分别是none、manual和auto;默认auto
    spring.rabbitmq.listener.simple.concurrency: 最小的消费者数量
    spring.rabbitmq.listener.simple.max-concurrency: 最大的消费者数量
    spring.rabbitmq.listener.simple.prefetch: 一个消费者最多可处理的nack消息数量,如果有事务的话,必须大于等于transaction数量.
    spring.rabbitmq.listener.simple.transaction-size: 当ack模式为auto时,一个事务(ack间)处理的消息数量,最好是小于等于prefetch的数量.若大于prefetch, 则prefetch将增加到这个值
    spring.rabbitmq.listener.simple.default-requeue-rejected: 决定被拒绝的消息是否重新入队;默认是true(与参数acknowledge-mode有关系)
    spring.rabbitmq.listener.simple.missing-queues-fatal=true 若容器声明的队列在代理上不可用,是否失败; 或者运行时一个多多个队列被删除,是否停止容器
    spring.rabbitmq.listener.simple.idle-event-interval: 发布空闲容器的时间间隔,单位毫秒
    spring.rabbitmq.listener.simple.retry.enabled=false: 监听重试是否可用
    spring.rabbitmq.listener.simple.retry.max-attempts=3: 最大重试次数
    spring.rabbitmq.listener.simple.retry.max-interval=10000ms: 最大重试时间间隔
    spring.rabbitmq.listener.simple.retry.initial-interval=1000ms:第一次和第二次尝试传递消息的时间间隔
    spring.rabbitmq.listener.simple.retry.multiplier=1: 应用于上一重试间隔的乘数
    spring.rabbitmq.listener.simple.retry.stateless=true: 重试时有状态or无状态
    
    spring.rabbitmq.listener.direct.acknowledge-mode= ack模式
    spring.rabbitmq.listener.direct.auto-startup=true 是否在启动时自动启动容器
    spring.rabbitmq.listener.direct.consumers-per-queue= 每个队列消费者数量.
    spring.rabbitmq.listener.direct.default-requeue-rejected= 默认是否将拒绝传送的消息重新入队.
    spring.rabbitmq.listener.direct.idle-event-interval= 空闲容器事件发布时间间隔.
    spring.rabbitmq.listener.direct.missing-queues-fatal=false若容器声明的队列在代理上不可用,是否失败.
    spring.rabbitmq.listener.direct.prefetch= 每个消费者可最大处理的nack消息数量.
    spring.rabbitmq.listener.direct.retry.enabled=false  是否启用发布重试机制.
    spring.rabbitmq.listener.direct.retry.initial-interval=1000ms # Duration between the first and second attempt to deliver a message.
    spring.rabbitmq.listener.direct.retry.max-attempts=3 # Maximum number of attempts to deliver a message.
    spring.rabbitmq.listener.direct.retry.max-interval=10000ms # Maximum duration between attempts.
    spring.rabbitmq.listener.direct.retry.multiplier=1 # Multiplier to apply to the previous retry interval.
    spring.rabbitmq.listener.direct.retry.stateless=true # Whether retries are stateless or stateful.
    

    5. Template

    spring.rabbitmq.template.mandatory: 启用强制信息;默认false
    spring.rabbitmq.template.receive-timeout: receive() 操作的超时时间
    spring.rabbitmq.template.reply-timeout: sendAndReceive() 操作的超时时间
    spring.rabbitmq.template.retry.enabled=false: 发送重试是否可用 
    spring.rabbitmq.template.retry.max-attempts=3: 最大重试次数
    spring.rabbitmq.template.retry.initial-interva=1000msl: 第一次和第二次尝试发布或传递消息之间的间隔
    spring.rabbitmq.template.retry.multiplier=1: 应用于上一重试间隔的乘数
    spring.rabbitmq.template.retry.max-interval=10000: 最大重试时间间隔
    

     

    参考资料: https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html

     

     

     

     

     

     

    展开全文
  • RabbitMQ集群参数配置

    2019-09-20 18:58:50
    文章目录RabbitMQ可实施方案(镜像队列模式)配置镜像队列SpringBoot整合RabbitMQ集群 RabbitMQ可实施方案(镜像队列模式) 假设已经搭建好镜像队列集群 配置镜像队列 在任意节点的sbin目录下输入以下命令(因为该...

    RabbitMQ可实施方案(镜像队列模式)

    假设已经搭建好镜像队列集群

    配置镜像队列

    在任意节点的sbin目录下输入以下命令(因为该命令会自动在集群中同步)

    rabbitmqctl set_policy ha-all-name "^my" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
    

    ha-all-name: 为策略名称;

    ^my:为匹配符,只有一个代表匹配所有,my为匹配名称以my开头的queue或exchange;

    ha-mode:为同步模式,一共3种模式:

    all-所有(所有的节点都同步消息),
    exctly-指定节点的数目(需配置ha-params参数,此参数为int类型比如2,在集群中随机抽取2个节点同步消息)如:"ha-params":2
    nodes-指定具体节点(需配置ha-params参数,此参数为数组类型比如:"ha-params":["rabbit@rabbitmq1","rabbit@rabbitmq2"],明确指定在这两个节点上同步消息)。
    

    ha-sync-mode:节点默认自动同步

    web管理界面也能配置:
    在这里插入图片描述

    SpringBoot整合RabbitMQ集群

    生产者:

    application.xml配置

    spring:
      rabbitmq:
        username: harry
        password: harry123
        virtual-host: harry
        connection-timeout: 15000
        publisher-confirms: true
        publisher-returns: false
        template:
          mandatory: true
        addresses: 00.00.00.00:1111,00.00.00.00:2222,00.00.00.00:3333
    

    virtual-host:主机名

    publisher-confirms:一旦消息被投递到所有匹配的队列之后,RabbiMQ就会发送一个确认(Basic.Ack)给生产者(包含消息的唯一ID),这就使得生产者知道消息已经正确到达了。

    publisher-returns:启动消息失败返回,比如路由不到队列时触发回调。

    mandatory: 当mandatory标志位设置为true时,无法找到一个合适的queue存储消息,那么broker会调用basic.return方法将消息返还给生产者;当mandatory设置为false时,出现上述情况broker会直接将消息丢弃

    package com.xyl.springboot.producer;
    
    import java.util.Map;
    
    import org.springframework.amqp.rabbit.core.RabbitTemplate;
    import org.springframework.amqp.rabbit.core.RabbitTemplate.ConfirmCallback;
    import org.springframework.amqp.rabbit.core.RabbitTemplate.ReturnCallback;
    import org.springframework.amqp.rabbit.support.CorrelationData;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.messaging.Message;
    import org.springframework.messaging.MessageHeaders;
    import org.springframework.messaging.support.MessageBuilder;
    import org.springframework.stereotype.Component;
    
    @Component
    public class RabbitSender {
    
        //自动注入RabbitTemplate模板类
        @Autowired
        private RabbitTemplate rabbitTemplate;  
        
        //回调函数: confirm确认
        final ConfirmCallback confirmCallback = new RabbitTemplate.ConfirmCallback() {
            @Override
            public void confirm(CorrelationData correlationData, boolean ack, String cause) {
                System.err.println("correlationData: " + correlationData);
                System.err.println("ack: " + ack);
                if(!ack){
                    System.err.println("异常处理....");
                }
            }
        };
        
        //回调函数: return返回
        final ReturnCallback returnCallback = new RabbitTemplate.ReturnCallback() {
            @Override
            public void returnedMessage(org.springframework.amqp.core.Message message, int replyCode, String replyText,
                    String exchange, String routingKey) {
                System.err.println("return exchange: " + exchange + ", routingKey: " 
                    + routingKey + ", replyCode: " + replyCode + ", replyText: " + replyText);
            }
        };
        
        //发送消息方法调用: 构建Message消息
        public void send(Object message, Map<String, Object> properties) throws Exception {
            MessageHeaders mhs = new MessageHeaders(properties);
            Message msg = MessageBuilder.createMessage(message, mhs);
            rabbitTemplate.setConfirmCallback(confirmCallback);
            rabbitTemplate.setReturnCallback(returnCallback);
            //id + 时间戳 全局唯一 
            CorrelationData correlationData = new CorrelationData("1234567890");
            rabbitTemplate.convertAndSend("exchange-1", "springboot.abc", msg, correlationData);
        }
          
    }
    

    pom.xml:

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-amqp</artifactId>
            </dependency>
    

    消费者:

    application.xml配置

    spring:
      rabbitmq:
        username: harry
        password: harry123
        virtual-host: harry
        connection-timeout: 15000
        addresses: 00.00.00.00:1111,00.00.00.00:2222,00.00.00.00:3333
        listener:
          direct:
            acknowledge-mode: manual
          simple:
            concurrency: 5
            max-concurrency: 10
    

    acknowledge-mode:手动开启通知 Rabbit 消息消费成功

    simple:指定最小最大消费者数量

    消费者测试代码:

    package com.xyl.springboot.conusmer;
    
    import org.springframework.amqp.rabbit.annotation.Exchange;
    import org.springframework.amqp.rabbit.annotation.Queue;
    import org.springframework.amqp.rabbit.annotation.QueueBinding;
    import org.springframework.amqp.rabbit.annotation.RabbitHandler;
    import org.springframework.amqp.rabbit.annotation.RabbitListener;
    import org.springframework.amqp.support.AmqpHeaders;
    import org.springframework.messaging.Message;
    import org.springframework.stereotype.Component;
    
    import com.rabbitmq.client.Channel;
    
    @Component
    public class RabbitReceiver {
    
        @RabbitListener(bindings = @QueueBinding(
                value = @Queue(value = "queue-1", 
                durable="true"),
                exchange = @Exchange(value = "exchange-1", 
                durable="true", 
                type= "topic", 
                ignoreDeclarationExceptions = "true"),
                key = "springboot.*"
                )
        )
        @RabbitHandler
        public void onMessage(Message message, Channel channel) throws Exception {
            System.err.println("--------------------------------------");
            System.err.println("消费端Payload: " + message.getPayload());
            Long deliveryTag = (Long)message.getHeaders().get(AmqpHeaders.DELIVERY_TAG);
            //手工ACK
            channel.basicAck(deliveryTag, false);
        }
    }
    

    RabbitTemplate <<<<<<------------------------------

    展开全文
  • rabbitmq配置参数

    2020-08-05 18:02:52
    一般的配置文件位置:/etc/rabbitmq/rabbitmq.config 一 rabbitmq 生产部署 RabbitMQ 常用的三种自定义服务器的通用方法: 配置文件 rabbitmq.conf 环境变量文件 rabbitmq-env.conf 补充配置文件 advanced....

    一般的配置文件位置:/etc/rabbitmq/rabbitmq.config

    一 rabbitmq 生产部署

    RabbitMQ 常用的三种自定义服务器的通用方法:

    • 配置文件 rabbitmq.conf
    • 环境变量文件 rabbitmq-env.conf
    • 补充配置文件 advanced.config

    rabbitmq.conf和rabbitmq-env.conf的位置

    • 在二进制安装中路径是在 :安装目录下的/etc/rabbitmq/
    • rpm 安装: /etc/rabbitmq/

    如果rabbitmq.conf和rabbitmq-env.conf 的两个文件不存在,那么我们可以创建该文件,然后我们可以通过环境变量
    指定该文件的位置。

    补充 :

    • rabbitmqctl rabbitmqctl 是管理虚拟主机和用户权限的工具
    • rabbitmq-plugins 是管理插件的工具

    1.1 rabbitmq.conf

    在rabbitmq 3.7.0 之前,rabbitmq.conf 使用了Erlang语法配置格式,新的版本使用了sysctl 格式.

    sysctl 语法:

    • 单个信息都在一行里面
    • 配置信息以key value 的形式保存。
    • ‘#’开头表示注释。

    配置示例文件:rabbitmq.conf.example

    配置属性和描述(官网链接

    属性 描述 默认值
    listeners 要监听 AMQP 0-9-1 and AMQP 1.0 的端口 listeners.tcp.default = 5672
    num_acceptors.tcp 接受tcp连接的erlang 进程数 num_acceptors.tcp = 10
    handshake_timeout AMQP 0-9-1 超时时间,也就是最大的连接时间,单位毫秒 handshake_timeout = 10000
    listeners.ssl 启用TLS的协议 默认值为none
    num_acceptors.ssl 接受基于TLS协议的连接的erlang 进程数 num_acceptors.ssl = 10
    ssl_options TLS 配置 ssl_options =none
    ssl_handshake_timeout TLS 连接超时时间 单位为毫秒 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 当内存的使用达到了50%后,队列开始将消息分页到磁盘 vm_memory_high_watermark_paging_ratio = 0.5
    total_memory_available_override_value 该参数用于指定系统的可用内存总量,一般不使用,适用于在容器等一些获取内存实际值不精确的环境 默认未设置
    disk_free_limit Rabbitmq存储数据的可用空间限制,当低于该值的时候,将触发流量限制,设置可参考vm_memory_high_watermark参数 disk_free_limit.absolute = 50MB
    log.file.level 控制记录日志的等级,有info,error,warning,debug log.file.level = info
    channel_max 最大通道数,但不包含协议中使用的特殊通道号0,设置为0表示无限制,不建议使用该值,容易出现channel泄漏 channel_max = 2047
    channel_operation_timeout 通道操作超时,单位为毫秒 channel_operation_timeout = 15000
    heartbeat 表示连接参数协商期间服务器建议的心跳超时的值。如果两端都设置为0,则禁用心跳,不建议禁用 heartbeat = 60
    default_vhost rabbitmq安装后启动创建的虚拟主机 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.guest = true(默认为只能本地连接)
    cluster_formation.classic_config.nodes 设置集群节点cluster_formation.classic_config.nodes.1 = rabbit@hostname1
    cluster_formation.classic_config.nodes.2 = rabbit@hostname2 默认为空,未设置
    collect_statistics 统计收集模式,none 不发出统计信息事件,coarse每个队列连接都发送统计一次,fine每发一条消息的统计数据 collect_statistics = none
    collect_statistics_interval 统计信息收集间隔,以毫秒为单位 collect_statistics_interval = 5000
    delegate_count 用于集群内通信的委托进程数。在多核的服务器上我们可以增加此值 delegate_count = 16
    tcp_listen_options 默认的套接字选项 tcp_listen_options.backlog = 128 .....
    hipe_compile 设置为true以使用HiPE预编译RabbitMQ的部分,HiPE是Erlang的即时编译器,启用HiPE可以提高吞吐量两位数,但启动时会延迟几分钟。Erlang运行时必须包含HiPE支持。如果不是,启用此选项将不起作用。HiPE在某些平台上根本不可用,尤其是Windows。 hipe_compile = false
    cluster_keepalive_interval 节点应该多长时间向其他节点发送keepalive消息(以毫秒为单位),keepalive的消息丢失不会被视为关闭 cluster_keepalive_interval = 10000
    queue_index_embed_msgs_below 消息的字节大小,低于该大小,消息将直接嵌入队列索引中 bytes queue_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 队列主节点的策略,有三大策略 min-masters,client-local,random queue_master_locator = client-local
    proxy_protocol 如果设置为true ,则连接需要通过反向代理连接,不能直连接 proxy_protocol = false
    management.listener.port rabbitmq web管理界面使用的端口 management.listener.port = 15672

    查看rabbitmq的有效配置

    rabbitmqctl environment

    1.2 advanced.config

    示例文件
    某些配置设置不可用或难以使用sysctl格式进行配置。因此,可以使用Erlang术语格式的其他配置文件advanced.config
    它将与rabbitmq.conf 文件中提供的配置合并。

    配置属性和描述(官网链接

    属性 描述 默认值
    msg_store_index_module 设置队列索引使用的模块 {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 消息储存的文件大小,现有的节点更改是危险的,可能导致数据丢失 默认值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 在内存压力下为延迟队列设置的值,该值可以触发垃圾回收和减少内存使用,降低该值,会降低性能,提高该值,会导致更高的内存消耗 {rabbit,[{lazy_queue_explicit_gc_run_operation_threshold, 1000}]}
    queue_explicit_gc_run_operation_threshold 在内存压力下,正常队列设置的值,该值可以触发垃圾回收和减少内存使用,降低该值,会降低性能,提高该值,会导致更高的内存消耗 {rabbit, [{queue_explicit_gc_run_operation_threshold, 1000}]}

    1.3 rabbitmq-env.conf

    官网链接
    通过rabbitmq-env.conf 来定义环境变量
    RABBITMQ_NODENAME 指定节点名称

    属性 描述 默认值
    RABBITMQ_NODE_IP_ADDRESS 绑定的网络接口 默认为空字符串表示绑定本机所有的网络接口
    RABBITMQ_NODE_PORT 端口 默认为5672
    RABBITMQ_DISTRIBUTION_BUFFER_SIZE 节点之间通信连接的数据缓冲区大小 默认为128000,该值建议不要使用低于64MB
    RABBITMQ_IO_THREAD_POOL_SIZE 运行时用于io的线程数 建议不要低于32,linux默认为128 ,windows默认为64
    RABBITMQ_NODENAME rabbitmq节点名称,集群中要注意节点名称唯一 linux 默认节点名为 rabbit@$hostname
    RABBITMQ_CONFIG_FILE rabbitmq 的配置文件路径,注意不要加文件的后缀(.conf) 默认 $RABBITMQ_HOME/etc/rabbitmq/rabbitmq(二进制安装) /etc/rabbitmq/rabbitmq(rpm 安装)
    RABBITMQ_ADVANCED_CONFIG_FILE advanced.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_SERVER_CODE_PATH 在使用HiPE 模块时需要使用 默认为空
    RABBITMQ_LOGS 指定日志文件位置 默认为 $RABBITMQ_HOME/etc/var/log/rabbitmq/

    网络设置 http://www.rabbitmq.com/networking.html
    RABBITMQ_DISTRIBUTION_BUFFER_SIZE 节点间通信缓冲区大小,默认值 128Mb,节点流量比较多的集群中,可以提升该值,建议该值不要低于64MB。

    tcp 缓存区大小
    下示例将AMQP 0-9-1连接的TCP缓冲区设置为192 KiB:

    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.sndbuf = 196608
    tcp_listen_options.recbuf = 196608

    1.4 在生产环境中不适用的策略。

    官网链接

    • 1.4.1 vhost

    在生产中,如果rabbitmq只为单个系统提供服务的时候,我们使用默认的(/)是可以的。在为多个系统提供的服务时,我们建议使用单独的vhost.

    • 1.4.2 user

    对于生产环境,请删除默认用户(guest),默认用户只能从localhost 连接。
    我们可以创建指定权限的单独用户为每个应用提供服务。对于开启权限用户来说,我们可以使用证书,和源ip地址过滤,和身份验证。来加强安全性。

    • 1.4.3 最大打开文件限制

    在生产环境我们可能需要调整一些系统的默认限制,以便处理大量的并发连接和队列。
    需要调整的值有打开的最大文件数。在生产环境为rabbitmq 运行的用户设定为65536,但是对于大多数开发环境来说,4096就已经足够了。

    查看默认的打开文件的最大数量。

    ulimit -n

    更改方式:

    • 1 临时修改
    ulimit -n 65536
      • 2 永久修改
        • 2.1如果是systemed 来进行管理的话我们可以编辑systemed配置文件来进行控制
        [service]
        LimitNOFILE=300000
        • 2.2 如果不是systemed 来进行管理的话,我们可以更改rabbitmq的启动加载的环境配置文件 rabbitmq-env.conf。在里面开头添加ulimit -S -n 4096,但该值不能超过系统的默认值的最大值。

          ulimit -S -n 4096
        • 2.3 系统级别更改
          更改配置文件:/etc/security/limits.conf
          在文件末尾前面加入
          rabbitmq(启动的用户名) - nofile 65536
          如果更改前用户已经登录的话,需要重新登录下才能生效。

      • 1.4.4 内存
        当rabbitmq 检测到它使用的内存超过系统的40%,它将不会接受任何新的消息,这个值是由参数 vm_memory_high_watermark来控制的,默认值是一个安全的值,修改该值需要注意。 rabbitmq 的至少需要128MB,建议vm_memory_high_watermark 值为 0.4~0..66 ,不要使用大于0.7的值。

      • 1.4.5 磁盘
        磁盘默认的储存数据阈值是50MB,当低于该值的时候,将触发流量限制。50MB 只适用于开发环境,生产环境需要调高该值,不然容易由磁盘空间不足导致节点故障,也可能导致数据丢失。

        在生产环境中我们设置的值

        • 建议的最小值 {disk_free_limit, {mem_relative, 1.0}}
        它是基于mem_relative的值,例如在具有4GB内存的rabbitmq主机上,那么该磁盘的阈值就是4G,如果磁盘可用空间低于4G,所有生产者和消息都将拒绝。在允许恢复发布之前,通常需要消费者将队列消息消费完。
        • 建议的更安全值 {disk_free_limit, {mem_relative, 1.5}}
        在具有4GB内存的RabbitMQ节点上,如果可用磁盘空间低于6GB,则所有新消息都将被阻止,但是如果我们在停止的时候rabbitmq需要储存4GB的数据到磁盘,再下一次启动的时候,就只有2G空间了。
        • 建议的最大值 {disk_free_limit, {mem_relative, 2.0}}
          这个是最安全的值,如果你的磁盘有足够多的空间话,建议设置该值。但该值容易触发警告,因为在具有4GB内存的rabbitmq主机上,需要最低空间大于8G,如果你的磁盘空间比较少的话,不建议设置该值。
      • 1.4.6 连接
        少使用短连接,使用连接池或者长连接。

      • 1.4.7 TLS
        建议尽可能使用TLS连接,使用TLS会对传输的数据加密,但是对系统的吞吐量产生很大的影响
      • -1.4.8 更改默认端口
        我们常用的web界面的端口 15672 和AMQP 0-9-1 协议端口 5672 ,建议更改,web界面更改,配置参数 management.listener.port ,AMQP 0-9-1 协议端口配置参数 listeners.tcp.default。

    •  
    展开全文
  • Rabbitmq - 配置

    2019-05-28 18:05:00
    目录 RabbitMQ 配置 简介 环境变量 配置文件 运行时参数和策略 ...默认配置,已经可以有效地运行RabbitMQ,并且在大多数情况下不需要更改配置。不过为了在生产环境中稳定、高效的运行,R...
  • RabbitMQ配置参数说明

    2020-02-21 17:43:37
    Spring Boot 整合RabbitMQ环境下的配置参数解释,通过官网文档和网上其他朋友一些文章参考归纳整理而得,有错误之处还请指正~ ★RabbitMQ ★Version: 1.5.13.RELEASE ★属性文件:org.springframework.boot....
  • rabbitmq 常用配置

    2018-12-11 14:03:00
    RabbitMQ配置文件 简单的rabbitmq配置可无需配置文件,只有需要定制复杂应用时,才需要用到配置文件 rabbitmq-env.conf配置 常用参数: 按 Ctrl+C 复制代码 <textarea style="margin: 0px; padding: 0px; list-...
  • rabbitmq 常用配置

    2018-12-11 14:03:00
    RabbitMQ配置文件 简单的rabbitmq配置可无需配置文件,只有需要定制复杂应用时,才需要用到配置文件 rabbitmq-env.conf配置 常用参数: 按 Ctrl+C 复制代码 <textarea style="margin: 0px; padding: 0px; list-...
  • Spring整合RabbitMQ实战配置配置通用配置生产端配置消费端配置其他代码生成端消费端 本文只讲述spring整合rabbitmq配置与代码实现,没有安装rabbitmq的教程 配置 通用配置 rabbitmq 的地址配置,admin产生 一个mq...
  • rabbitmq安装配置

    2021-04-04 18:25:07
    https://github.com/rabbitmq/rabbitmq-server/releases wget www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64.rpm wget ...
  • RabbitMQ集群配置

    2017-07-25 11:06:07
    RabbitMQ的集群是依赖于Erlang的集群来工作的,所以必须先构建起Erlang的集群环境。 操作步骤: 【 第一步 】例如将服务器1上.erlang.cookie文件复制到服务器2上,只在服务器1上执行如下指令: 【 第二步 】...
  • rabbitmq中,一般情况下都提供了默认的配置实现,在rabbitmq3.7.0之前只有rabbitmq.conf配置说明,它使用的是KeyValue的方式进行配置,而之后可以通过erlang语音的方式进行配置,只不过对于我们来说还是喜欢Key...
  • 首先我们要先在application配置文件中配置我们的rabbitmq参数信息。下面举个例子 spring: rabbitmq: host: 10.1.92.8 port: 5970 username: guest password: guest 创建配置类 @Data @ConfigurationProper
  • RabbitMQ分布式配置

    千次阅读 2018-03-26 10:59:05
    (一) 功能和原理设计集群的目的允许消费者和生产者在RabbitMQ节点崩溃的情况下继续运行通过增加更多的节点来扩展消息通信的吞吐量1 集群配置方式RabbitMQ可以通过三种方法来部署分布式集群系统,分别是:cluster,...
  • Spring Boot + RabbitMQ 配置参数解释 最近生产RabbitMQ出了几次问题,所以抽时间整理了一份关于Spring Boot 整合RabbitMQ环境下的配置参数解释,通过官网文档和网上其他朋友一些文章参考归纳整理而得,有错误之...
  • RabbitMQ支持三种配置方式:  1) 读取环境变量中配置, 这包括shell中环境变量和rabbitmq-env.conf/rabbitmq-env-conf.bat文件中配置的环境变量  可配置如端口、配置文件指定自定义位置、节点名字等信息。  2...
  • RabbitMQ配置

    2021-04-09 14:18:35
    为了更加有效的操控RabbitMQ,可以利用调节系统范围内的参数来达到定制化的需求。 二、环境变量 RabbitMQ的环境变量都是以“RABBITMQ_“开头的,可以在shell环境中设置,也可以在rabbitmq-env.conf这个RabbitMQ环境...
  • RabbitMQ Server配置详解

    千次阅读 2016-10-23 09:07:42
    原文地址:http://previous.rabbitmq.com/v3_4_x/configure.html ...RabbitMQ comes with default built-in settings which will most likely be sufficient for running your RabbitMQ server effe
  • RabbitMq配置和使用

    千次阅读 2017-07-20 15:58:32
    要使用RabbitMq可以先去spring官网上找到spring-rabbitMq里面有配置和maven依赖。本人的配置使用的是springboot框架
  • 2、配置RabbitMQ集群,配置可参考: https://blog.csdn.net/weixin_47026543/article/details/113348711 配置镜像队列: 配置镜像队列有两种方式,一是在代码中进行配置,二是使用管理命令进行配置。 一、在代码...
  • vert.x从配置文件读取RabbitMQ参数

    千次阅读 2018-05-11 10:41:15
    使用Vert.x实现RabbitMQ的点对点消息收发,队列名称等配置信息从conf文件中读取。注意,从conf拿到的配置信息要在start中进行加载。1、生产者和消费者分别是两个工程,其中pom处需要指定fat.jar的打包信息。 &lt...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,366
精华内容 13,346
关键字:

rabbitmq参数配置