基於activeMQ和protoBuffer的java消息中間件的測試

前段時間剛測試的一個項目,其中兩個系統之間需要實現增量數量的讀取更新,即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文件定義格式的生產和消費,其他兩種會出現異常!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章