前段时间刚测试的一个项目,其中两个系统之间需要实现增量数量的读取更新,即A系统获取到增量数据后通知B系统获取新增数据并进行后续的处理,为达到这一目标,最终设计为A数据存在增量数据至activeMQ,B系统从activeMQ中获取数据,为此,开发童鞋需实现一个通用的客户端工具包,方便两个系统发送和读取消息。
测试思路:
根据项目情况分析,该消息中间件的测试主要关注点是“生产者”、“消费者”两者针对消息的处理是否正常,即:
1.生产者能否将消息正确写入activeMQ
2.消费者能否从activeMQ中拉取出消息
3.写入的消息与拉取的消息是否能一一对应
由于消息的序列化格式使用的是protoBuffer,所以测试之前对其也进行了一下学习了解,主要关注:
1).proc文件格式的定义
在此文件中定义消息的格式字段,主要有三种类型:
required:必须赋值、不可为空
optional:可赋值也可不赋值
repeated:可重复任意次数,可将该关键字修饰的字段看成自动设置size的数组
需根据具体业务分析定义的proc文件中的字段是否符合真实业务的需要
2)proc文件的编译
将定义好的proc文件编译成需要的java文件,命令格式: protoc --proto_path=IMPORT_PATH --java_out=DST_DIR path/to/file.proto
proto_path:需编译的proc文件所在路径
java_out:编译生成java文件的路径,也可在proc文件中定义:option java_package=.....
编译生成的java文件有三种类型:
SPEED:生成的代码效率高,但会占用更多的空间
CODE_SIZE:与SPEED相反
LITE_RUNTIME:生成的代码效率高、占用空间少,但是要牺牲反射功能(这一点不太理解)
可在proc文件中对设置上述三项:option optimize_for=
上述准备工作都就绪以后,便可开始测试:
1.根据proc生成需要的java类,上述3个类型都需生成一份
2.模拟生产者调用开发提供的公共客户端,设置生产者数据并发送到activeMQ中(调用3种类型的java文件,即上面提到的SPEED、CODE_SIZE、LITE_RUNTIME)
3.模拟消费者调用开发提供的公共客户端,从activeMQ中拉取数据并解析(调用3种类型的java文件,即上面提到的SPEED、CODE_SIZE、LITE_RUNTIME)
4.验证生产者数据与消费者拉取到的数据一致
5.上述操作批量执行
测试结果:提供的客户端只能实现SPEED一种java文件定义格式的生产和消费,其他两种会出现异常!
相关推荐
### Java消息服务的消息中间件的研究与设计 #### 一、引言 随着分布式计算环境的日益普及和技术的进步,异构系统间的通信问题逐渐成为关注焦点。消息中间件作为一种解决这一问题的有效手段,其重要性日益凸显。...
本压缩包文件聚焦于基于Java语言开发的消息中间件测试,为Java开发者提供了一套完整的测试方案和测试工具。 MQ消息中间件的测试是一个复杂的过程,它不仅仅包括对消息传递的准确性、顺序性的测试,还包括对消息系统...
在进行基于Java语言的消息中间件测试时,测试者需要考虑多种因素,包括消息的发送与接收、消息的可靠性、性能指标、容错能力、以及分布式系统中的事务处理等。测试过程中,可能会用到一些特定的测试框架和工具,例如...
在测试消息中间件时,需要在后台打印相关日志,以便查看消息推送是否成功。 最后,在消息中心中,可以查看消息推送记录,以便追溯消息的发送情况。 JEECG 消息中间件使用手册为开发者提供了详细的使用指南和配置...
使用者可以通过`mvn compile`和`mvn test`命令来编译和运行项目,测试消息传递功能。 5. **测试**: `Client.java`位于`test`包下,表明它是一个测试类,用于验证ActiveMQ的Java操作。这可能包含了不同场景的测试...
消息中间件(Middleware)是分布式系统架构中的关键组件之一,它是一种软件基础设施,专注于...此外,消息中间件的隔离性和解耦特性,使得不同服务可以独立开发、测试和部署,极大地提高了开发效率和系统维护的便捷性。
功能优势: ...3 简单易用:我将每个压测场景都单独封装成一个个 Shell 脚本,你在本地只需要有 JAVA 环境,就可以一键启动压测。 适用场景:后端开发同学功能测试或性能测试;测试开发同学进行压力测试。
测试消息中间件需要关注性能测试、压力测试和兼容性测试。部署时需要考虑系统的稳定性和监控策略,确保消息中间件的持续稳定运行。 14. 消息中间件的维护与优化 消息中间件的日常维护包括故障排除、性能监控、...
总之,这个实验旨在通过实际操作,使学习者深入了解消息中间件的实用价值,掌握ActiveMQ的基本操作,以及如何在Java环境中实现单线程处理多队列的高效通信模式。在完成实验后,学习者应具备设计和实现基于ActiveMQ的...
Java作为企业级开发的首选语言,其在消息中间件领域有着丰富的实现,如ActiveMQ、RabbitMQ Java客户端、Apache Kafka以及JMS(Java Message Service)规范。Java开发者可以使用JMS API来与各种消息中间件提供商进行...
最后,通过Spring Boot的自动配置特性,可以快速地启动并测试消息中间件的整合效果。 例如,在整合RabbitMQ与Spring Boot时,需要添加RabbitMQ的客户端库依赖,配置连接工厂、交换机和队列等RabbitMQ组件,然后创建...
《大型网站系统与Java中间件实践》是一本深入探讨如何构建和优化大型互联网系统的书籍,主要聚焦于Java技术栈和中间件的实践应用。通过阅读这本书,我们可以了解到一系列关键的技术概念和最佳实践,这些对于任何想要...
Java中间件领域的ActiveMQ是一款由Apache开发的开源消息中间件,它为企业级应用提供高效、可扩展、稳定且安全的消息通信服务。ActiveMQ的核心目标是实现标准的、面向消息的集成,支持多语言环境,确保不同平台之间的...
这涉及到测试消息是否容易被未授权的用户截获或者篡改,以及ActiveMQ是否能够有效防止恶意攻击。 6. 用户场景测试:用户场景测试模拟真实的业务场景,通过模拟客户端发送和接收消息来测试ActiveMQ在实际应用中的...
Java中间件是构建大型、复杂系统的关键组成部分,它包括了诸如数据库连接池、消息队列、缓存、定时任务、安全框架、搜索引擎集成等多个方面。通过学习和理解这些中间件的编程,开发者能够更好地构建高效、稳定且可...
在消息中间件的测试案例中,通常包括对消息传递的正确性、性能、稳定性、安全性等方面的测试。测试案例可以帮助开发者和测试者确保消息系统在部署前能够正确地处理消息,并在各种不同的工作负载下保持性能。 在...
本篇文章将围绕 ActiveMQ 在 Java 中的应用进行深入探讨,通过分析【Java学习】activemq消息中间件学习demo.zip压缩包中的内容,为读者提供一个全面的ActiveMQ学习实践指南。 首先,需要明确的是,ActiveMQ 是 ...
**JMS(Java Message Service)**是Java平台中用于企业级应用系统间异步通信的标准接口,它定义了生产、发送、接收消息的统一方式。通过JMS,开发者可以将消息传递作为应用程序间的通信手段,使得分布式系统能够解耦...