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

全部评论

相关推荐

头像
04-27 15:11
已编辑
华东师范大学 算法工程师
暑期实习从2月开始投,面了两个月,流程该挂的都挂完了,腾讯字节一共号称是1.7w个hc,不知道都发给谁了,估计今年秋招要难顶。Timeline米哈游、美团、蚂蚁、微软等公司直接简历挂穿,没进面。携程:3.3 投递、测评3.12 笔试3.18 一面3.25 二面4.13 ai面(hr面)4.14 英语测评4.23 offer(已拒)腾讯:2.6 测评2.28 wxg一面3.5 wxg二面(挂)3.11 teg一面3.21 teg二面(取消)3.31 teg一面4.10 teg二面(挂)4.21 wxg一面4.24 wxg二面(挂)字节:1.28 aml约面(取消)3.17 火山一面(挂)4.8 aml一面(挂)4.20 抖音data一面(挂)阿里:3.23 投递、测评3.28 笔试3.31 淘天一面4.8 钉钉一面4.9 淘天二面4.10 阿里控股一面4.12 钉钉二面(取消)4.15 淘天hr面4.16 淘天offer(已接)4.21 高德一面(取消)4.22 淘宝闪购一面(取消)面试最大的感触是,现在撞上ai转型,一堆老业务急着转向,新业务非常不成熟,研究型的组bar非常高根本进不去,业务侧挂着算法的岗位干的都是工程活,面试却又要问算法,另外agent的落地也远没有那么广,绝大多数还是那套写死的系统调一下llm api或者做做rag,其余少部分真的在搭agent的,基本不能在线上服务用什么很智能的模型,现阶段成本太高,进去大概率就是给垃圾模型从工程方面兜底,除了业务场景的应用和数据经验以外,技术方面很难有什么提升。算法岗做不了基模的还是去搜广推好,之前判断失误了完全没投,秋招不知道还进不进得去。
绿糖滑稽:携程这什么雷霆流程时长
我的求职进度条
点赞 评论 收藏
分享
肥肠椒绿:双非本可不就犯天条了,双非本就应该打入无间地狱
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务