RabbitMQ基本功能测试用例(Java实现)

简介:

为了测试RabbitMQ是否好用,编写了一个由Java语言编写的RabbitMQ基本功能测试用例,仅供参考。

代码说明:

由于实现语言是Java,因此有Java虚拟机(安装了JDK或JRE)即可测试,不需要像Python一样需要安装第三方模块,便于Docker环境下做简单测试。在此测试用例用用到了amqp-client-3.x.x.jar库,可以自行下载。

为实现一个java源文件中实现收与发(编译后还是3个Class文件),在main函数中起了两个线程,一个负责发,一个负责收,用来测试RabbitMQ消息的收与发。发送消息是每2s发一次(实现:Java Thread Sleep),为了每次发送消息内容的不同消息内容中加入了Java随机数(实现:Java Random)。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package  com.devops.broker.rabbitmq.client;
 
import  com.rabbitmq.client.Channel;
import  com.rabbitmq.client.Connection;
import  com.rabbitmq.client.ConnectionFactory;
import  com.rabbitmq.client.QueueingConsumer;
 
import  java.io.IOException;
import  java.util.Random;
 
class  send  extends  Thread {
     private  final  static  String QUEUE_NAME =  "hello" ;
 
     public  void  run() {
         ConnectionFactory factory =  new  ConnectionFactory();
         factory.setHost( "10.6.28.46" );
         factory.setPort( 5672 );
         factory.setUsername( "guest" );
         factory.setPassword( "guest" );
 
         Random randomIntNumber =  new  Random();
 
         try  {
             while  ( true ) {
                 Connection connection = factory.newConnection();
                 Channel channel = connection.createChannel();
 
                 channel.queueDeclare(QUEUE_NAME,  false false false null );
                 String message =  "Hello World!" ;
                 Long ThreadID = send.currentThread().getId();
                 message = message +  " Thread ID: "  + ThreadID.toString() +  " Random Num: "  + randomIntNumber.nextInt();
                 channel.basicPublish( "" , QUEUE_NAME,  null , message.getBytes());
                 System.out.println( "Sent '"  + message +  "'" );
                 System.out.println( "" );
                 channel.close();
                 connection.close();
                 try  {
                     Thread.sleep( 2000 );
                 catch  (InterruptedException e) {
                     e.printStackTrace();
                 }
             }
 
 
         catch  (Exception e) {
             System.out.println(e.getMessage());
         }
     }
}
 
class  receiver  extends  Thread {
     private  final  static  String QUEUE_NAME =  "hello" ;
 
     public  void  run() {
         ConnectionFactory factory =  new  ConnectionFactory();
         factory.setHost( "10.6.28.46" );
         factory.setPort( 5672 );
         factory.setUsername( "guest" );
         factory.setPassword( "guest" );
         try  {
             Connection connection = factory.newConnection();
             Channel channel = connection.createChannel();
 
             channel.queueDeclare(QUEUE_NAME,  false false false null );
 
             QueueingConsumer consumer =  new  QueueingConsumer(channel);
             channel.basicConsume(QUEUE_NAME,  true , consumer);
 
             while  ( true ) {
                 QueueingConsumer.Delivery delivery = consumer.nextDelivery();
                 String message =  new  String(delivery.getBody());
                 System.out.println( "Received '"  + message +  "'" );
             }
         catch  (Exception e) {
             System.out.println(e.getMessage());
         }
     }
 
}
 
public  class  Main {
 
     public  static  void  main(String[] args)  throws  IOException {
         send send =  new  send();
         send.start();
 
         receiver receiver =  new  receiver();
         receiver.start();
     }
}

tag:RabbitMQ Java demo,测试用例,功能测试

--end--



本文转自 urey_pp 51CTO博客,原文链接:http://blog.51cto.com/dgd2010/1794635,如需转载请自行联系原作者


相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
26天前
|
前端开发 JavaScript 测试技术
使用ChatGPT生成登录产品代码的测试用例和测试脚本
使用ChatGPT生成登录产品代码的测试用例和测试脚本
82 35
|
3月前
|
消息中间件 存储 Java
RocketMQ文件刷盘机制深度解析与Java模拟实现
【11月更文挑战第22天】在现代分布式系统中,消息队列(Message Queue, MQ)作为一种重要的中间件,扮演着连接不同服务、实现异步通信和消息解耦的关键角色。Apache RocketMQ作为一款高性能的分布式消息中间件,广泛应用于实时数据流处理、日志流处理等场景。为了保证消息的可靠性,RocketMQ引入了一种称为“刷盘”的机制,将消息从内存写入到磁盘中,确保消息持久化。本文将从底层原理、业务场景、概念、功能点等方面深入解析RocketMQ的文件刷盘机制,并使用Java模拟实现类似的功能。
73 3
|
4月前
|
存储 消息中间件 安全
JUC组件实战:实现RRPC(Java与硬件通过MQTT的同步通信)
【10月更文挑战第9天】本文介绍了如何利用JUC组件实现Java服务与硬件通过MQTT的同步通信(RRPC)。通过模拟MQTT通信流程,使用`LinkedBlockingQueue`作为消息队列,详细讲解了消息发送、接收及响应的同步处理机制,包括任务超时处理和内存泄漏的预防措施。文中还提供了具体的类设计和方法实现,帮助理解同步通信的内部工作原理。
JUC组件实战:实现RRPC(Java与硬件通过MQTT的同步通信)
|
4月前
|
消息中间件 前端开发 Java
java高并发场景RabbitMQ的使用
java高并发场景RabbitMQ的使用
155 0
|
4月前
|
测试技术 数据安全/隐私保护
北邮人论坛登录页面测试用例
北邮人论坛登录页面测试用例
72 1
|
4月前
|
XML Java Maven
在 Cucumber 测试中自动将 Cucumber 数据表映射到 Java 对象
在 Cucumber 测试中自动将 Cucumber 数据表映射到 Java 对象
90 7
|
4月前
|
消息中间件 存储 JSON
rabbitmq基础教程(ui,java,springamqp)
本文提供了RabbitMQ的基础教程,包括如何使用UI创建队列和交换机、Java代码操作RabbitMQ、Spring AMQP进行消息发送和接收,以及如何使用不同的交换机类型(fanout、direct、topic)进行消息路由。
54 0
rabbitmq基础教程(ui,java,springamqp)
|
5月前
|
人工智能 测试技术 Python
基于 LangChain 的自动化测试用例的生成与执行
本章节详细介绍了如何利用人工智能技术自动化完成Web、App及接口测试用例的生成与执行过程,避免了手动粘贴和调整测试用例的繁琐操作。通过封装工具包与Agent,不仅提升了测试效率,还实现了从生成到执行的一体化流程。应用价值在于显著节省时间并提高测试自动化水平。
|
5月前
|
消息中间件 缓存 Java
RocketMQ的JAVA落地实战
RocketMQ作为一款高性能、高可靠、高实时、分布式特点的消息中间件,其核心作用主要体现在异步处理、削峰填谷以及系统解耦三个方面。
243 0
|
5月前
|
测试技术
基于LangChain手工测试用例转App自动化测试生成工具
在传统App自动化测试中,测试工程师需手动将功能测试用例转化为自动化用例。市面上多数产品通过录制操作生成测试用例,但可维护性差。本文探讨了利用大模型直接生成自动化测试用例的可能性,介绍了如何使用LangChain将功能测试用例转换为App自动化测试用例,大幅节省人力与资源。通过封装App底层工具并与大模型结合,记录执行步骤并生成自动化测试代码,最终实现高效自动化的测试流程。

热门文章

最新文章