如何测试中间件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

总结

连接测试

rabbitmqctl status

/

telnet

消息发送测试

rabbitmqadmin

/ Python 代码

性能测试

rabbitmq-perf-test

高可用性测试

镜像队列 / 集群测试

进阶高级测试工程师 文章被收录于专栏

《高级软件测试工程师》专栏旨在为测试领域的从业者提供深入的知识和实践指导,帮助大家从基础的测试技能迈向高级测试专家的行列。 在本专栏中,主要涵盖的内容: 1. 如何设计和实施高效的测试策略; 2. 掌握自动化测试、性能测试和安全测试的核心技术; 3. 深入理解测试驱动开发(TDD)和行为驱动开发(BDD)的实践方法; 4. 测试团队的管理和协作能力。 ——For.Heart

全部评论

相关推荐

评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务