如何测试中间件RabbitMQ
测试 RabbitMQ 中间件通常涉及以下几个方面:连接测试、消息发送与接收测试、性能测试以及高可用性测试。以下是具体的测试方法:
1. 环境准备
确保已经安装 RabbitMQ,并启动 RabbitMQ 服务器:
rabbitmq-server
可以使用 rabbitmqctl status
查看 RabbitMQ 运行状态。
2. 连接测试
(1)使用 RabbitMQ 管理界面
如果启用了 管理插件,可以在浏览器中访问:
http://localhost:15672/
默认用户名和密码:
用户名: admin 密码: admin
(2)使用 CLI 测试
在终端输入:
rabbitmqctl list_queues
如果能够成功列出队列,说明 RabbitMQ 连接正常。
(3)使用 Telnet 测试
telnet localhost 5672
如果成功连接,RabbitMQ 将返回 AMQP
相关信息,说明连接正常。
3. 发送与接收消息测试
(1)使用官方 rabbitmqadmin
rabbitmqadmin declare queue name=test_queue rabbitmqadmin publish exchange=amq.default routing_key=test_queue payload="Hello RabbitMQ" rabbitmqadmin get queue=test_queue
如果能正确获取 "Hello RabbitMQ"
,说明消息收发正常。
(2)使用 Python 测试
安装 pika 库:
pip install pika
生产者(Producer):
import pika connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) channel = connection.channel() channel.queue_declare(queue='test_queue') channel.basic_publish(exchange='', routing_key='test_queue', body='Hello RabbitMQ!') print(" [x] Sent 'Hello RabbitMQ!'") connection.close()
消费者(Consumer):
import pika connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) channel = connection.channel() channel.queue_declare(queue='test_queue') def callback(ch, method, properties, body): print(f" [x] Received {body}") channel.basic_consume(queue='test_queue', on_message_callback=callback, auto_ack=True) print(' [*] Waiting for messages. To exit press CTRL+C') channel.start_consuming()
运行消费者后,再运行生产者,观察消费者是否正确接收消息。
4. 性能测试
(1)使用 rabbitmq-perf-test
RabbitMQ 提供了 rabbitmq-perf-test
工具,可用于压测:
rabbitmq-perf-test --uri amqp://localhost --producers 5 --consumers 5 --rate 1000
--producers 5
:5 个生产者--consumers 5
:5 个消费者--rate 1000
:每秒 1000 条消息
(2)使用 Apache Benchmark (ab)
ab -n 10000 -c 100 http://localhost:15672/api/queues
测试 RabbitMQ API 响应速度。
5. 高可用性测试
(1)镜像队列测试
在 RabbitMQ 集群中创建镜像队列:
rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all"}'
然后关闭某个节点,检查消息是否还能正常消费。
(2)节点故障恢复测试
停止 RabbitMQ 节点:
rabbitmqctl stop
然后检查队列状态:
rabbitmqctl list_queues
总结
连接测试 |
/
|
消息发送测试 |
/ Python 代码 |
性能测试 |
|
高可用性测试 | 镜像队列 / 集群测试 |
《高级软件测试工程师》专栏旨在为测试领域的从业者提供深入的知识和实践指导,帮助大家从基础的测试技能迈向高级测试专家的行列。 在本专栏中,主要涵盖的内容: 1. 如何设计和实施高效的测试策略; 2. 掌握自动化测试、性能测试和安全测试的核心技术; 3. 深入理解测试驱动开发(TDD)和行为驱动开发(BDD)的实践方法; 4. 测试团队的管理和协作能力。 ——For.Heart