基于activeMQ和protoBuffer的java消息中间件的测试
2014-09-09 16:24
316 查看
前段时间刚测试的一个项目,其中两个系统之间需要实现增量数量的读取更新,即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文件定义格式的生产和消费,其他两种会出现异常!
测试思路:
根据项目情况分析,该消息中间件的测试主要关注点是“生产者”、“消费者”两者针对消息的处理是否正常,即:
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文件定义格式的生产和消费,其他两种会出现异常!
相关文章推荐
- ActiveMQ消息中间件整合Java配置实例
- 【java-分布式系统】消息中间件学习-jms(以ActiveMQ为例)
- Java消息中间件之ActiveMQ
- 【Java消息中间件】Java消息中间件( 第4章 使用activemq - 安装activemq )
- Java消息中间件学习笔记八 -- ActiveMQ集群
- 基于ActiveMQ的消息中间件系统逻辑与物理架构设计详解
- java消息中间件之二:spring集成JMS连接ActiveMQ
- Java消息中间件学习笔记三 -- ActiveMQ安装
- 以ActiveMQ为例JAVA消息中间件学习【2】
- java常用的消息中间件activeMQ
- java实现基于activeMQ的消息推送
- Java消息中间件之Spring中的ActiveMQ
- 基于ActiveMQ的消息中间件系统逻辑与物理架构设计具体解释
- Java消息中间件学习笔记四 -- ActiveMQ的使用,【队列模式】
- RocketMQ:一个纯java的开源消息中间件--开发测试环境搭建
- RocketMQ:一个纯java的开源消息中间件--开发测试环境搭建
- [ActiveMQ]消息中间件在Java中的使用
- 初见Java消息中间件之ActiveMQ
- Java消息中间件学习九 -- ActiveMQ与HA架构(master/slave)
- Java消息中间件学习笔记五 -- ActiveMQ的使用【主题模式】