大数据之rabbitmq 配置参数 核心参数 / 性能参数 清单

大数据阿木 发布于 6 天前 2 次阅读


RabbitMQ 配置参数清单:核心与性能优化

RabbitMQ 是一个开源的消息队列系统,它使用 AMQP(高级消息队列协议)协议来实现消息的传递。在处理大数据应用时,RabbitMQ 作为一个可靠的消息中间件,能够有效地处理高并发、高吞吐量的消息传递。本文将围绕 RabbitMQ 的配置参数,从核心参数和性能参数两个方面进行详细解析,帮助读者更好地理解和优化 RabbitMQ 的性能。

核心参数配置

1. 连接参数

- host: 指定 RabbitMQ 服务的 IP 地址或主机名。

- port: 指定 RabbitMQ 服务的端口号,默认为 5672。

- username: 指定连接 RabbitMQ 服务的用户名。

- password: 指定连接 RabbitMQ 服务的密码。

python

import pika

connection = pika.BlockingConnection(pika.ConnectionParameters(


host='localhost',


port=5672,


username='user',


password='password'


))


2. 消息队列参数

- queue: 指定消息队列的名称。

- durable: 指定队列是否持久化,默认为 False。

- auto_delete: 指定队列是否在消息被消费后自动删除,默认为 False。

python

channel = connection.channel()


channel.queue_declare(queue='task_queue', durable=True)


3. 交换机参数

- exchange: 指定交换机的名称。

- type: 指定交换机的类型,如 direct、fanout、topic 等。

- durable: 指定交换机是否持久化。

python

channel.exchange_declare(exchange='logs', exchange_type='fanout', durable=True)


4. 路由键参数

- routing_key: 指定消息的路由键,用于消息的路由。

python

channel.basic_publish(exchange='logs', routing_key='info', body='info message')


性能参数配置

1. 内存参数

- memory: 指定 RabbitMQ 服务的最大内存使用量。

- vm_memory: 指定虚拟内存的最大使用量。

python

import os

os.environ['RABBITMQ_NODENAME'] = 'my_rabbit'


os.environ['RABBITMQ_LOG_DIR'] = '/var/log/rabbitmq'


os.environ['RABBITMQ_Mnesia_DIR'] = '/var/lib/rabbitmq/mnesia'


os.environ['RABBITMQ_NODENAME'] = 'my_rabbit'


os.environ['RABBITMQ_SERVER_START_ARGS'] = '--vm_memory_high_watermark 50% --vm_memory_low_watermark 10%'


2. 线程参数

- thread_pool_size: 指定 RabbitMQ 服务的线程池大小。

- basic_ack: 指定是否在确认消息时使用线程池。

python

connection = pika.BlockingConnection(pika.ConnectionParameters(


host='localhost',


port=5672,


username='user',


password='password',


heartbeat=10,


blocked_connection_timeout=5


))


3. 消息确认机制

- auto_ack: 指定是否自动确认消息,默认为 True。

- basic_ack: 手动确认消息。

python

def callback(ch, method, properties, body):


print(" [x] Received %r" % body)


ch.basic_ack(delivery_tag=method.delivery_tag)

channel.basic_qos(prefetch_count=1)


channel.basic_consume(queue='task_queue', on_message_callback=callback)


4. 消息持久化

- durable: 指定消息是否持久化。

python

channel.basic_publish(exchange='logs', routing_key='info', body='info message', properties=pika.BasicProperties(delivery_mode=2,))


5. 交换机持久化

- durable: 指定交换机是否持久化。

python

channel.exchange_declare(exchange='logs', exchange_type='fanout', durable=True)


6. 队列持久化

- durable: 指定队列是否持久化。

python

channel.queue_declare(queue='task_queue', durable=True)


总结

本文详细介绍了 RabbitMQ 的核心参数和性能参数配置。通过合理配置这些参数,可以优化 RabbitMQ 的性能,提高大数据应用的处理能力。在实际应用中,应根据具体需求调整参数,以达到最佳性能。