diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..87d7fe7
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+middleware-mom
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..120b3d8
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000..b26911b
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__asm_asm_3_3_1.xml b/.idea/libraries/Maven__asm_asm_3_3_1.xml
new file mode 100644
index 0000000..1cf9333
--- /dev/null
+++ b/.idea/libraries/Maven__asm_asm_3_3_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_alibaba_fastjson_1_2_5.xml b/.idea/libraries/Maven__com_alibaba_fastjson_1_2_5.xml
new file mode 100644
index 0000000..adcbb0e
--- /dev/null
+++ b/.idea/libraries/Maven__com_alibaba_fastjson_1_2_5.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_esotericsoftware_kryo_3_0_2.xml b/.idea/libraries/Maven__com_esotericsoftware_kryo_3_0_2.xml
new file mode 100644
index 0000000..311fd9e
--- /dev/null
+++ b/.idea/libraries/Maven__com_esotericsoftware_kryo_3_0_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_esotericsoftware_minlog_1_3_0.xml b/.idea/libraries/Maven__com_esotericsoftware_minlog_1_3_0.xml
new file mode 100644
index 0000000..0f2bb63
--- /dev/null
+++ b/.idea/libraries/Maven__com_esotericsoftware_minlog_1_3_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_esotericsoftware_reflectasm_1_10_1.xml b/.idea/libraries/Maven__com_esotericsoftware_reflectasm_1_10_1.xml
new file mode 100644
index 0000000..5ea60d9
--- /dev/null
+++ b/.idea/libraries/Maven__com_esotericsoftware_reflectasm_1_10_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_5_3.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_5_3.xml
new file mode 100644
index 0000000..186af6a
--- /dev/null
+++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_5_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__de_ruedigermoeller_fst_2_34.xml b/.idea/libraries/Maven__de_ruedigermoeller_fst_2_34.xml
new file mode 100644
index 0000000..d79910a
--- /dev/null
+++ b/.idea/libraries/Maven__de_ruedigermoeller_fst_2_34.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__io_netty_netty_all_4_0_23_Final.xml b/.idea/libraries/Maven__io_netty_netty_all_4_0_23_Final.xml
new file mode 100644
index 0000000..7305d82
--- /dev/null
+++ b/.idea/libraries/Maven__io_netty_netty_all_4_0_23_Final.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__junit_junit_4_7.xml b/.idea/libraries/Maven__junit_junit_4_7.xml
new file mode 100644
index 0000000..4402995
--- /dev/null
+++ b/.idea/libraries/Maven__junit_junit_4_7.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__log4j_log4j_1_2_12.xml b/.idea/libraries/Maven__log4j_log4j_1_2_12.xml
new file mode 100644
index 0000000..f398ab4
--- /dev/null
+++ b/.idea/libraries/Maven__log4j_log4j_1_2_12.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__net_minidev_asm_1_0.xml b/.idea/libraries/Maven__net_minidev_asm_1_0.xml
new file mode 100644
index 0000000..86ed0eb
--- /dev/null
+++ b/.idea/libraries/Maven__net_minidev_asm_1_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__net_minidev_json_smart_2_0.xml b/.idea/libraries/Maven__net_minidev_json_smart_2_0.xml
new file mode 100644
index 0000000..7d5bf71
--- /dev/null
+++ b/.idea/libraries/Maven__net_minidev_json_smart_2_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_javassist_javassist_3_19_0_GA.xml b/.idea/libraries/Maven__org_javassist_javassist_3_19_0_GA.xml
new file mode 100644
index 0000000..be983fc
--- /dev/null
+++ b/.idea/libraries/Maven__org_javassist_javassist_3_19_0_GA.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_objenesis_objenesis_2_1.xml b/.idea/libraries/Maven__org_objenesis_objenesis_2_1.xml
new file mode 100644
index 0000000..7ab319b
--- /dev/null
+++ b/.idea/libraries/Maven__org_objenesis_objenesis_2_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_ow2_asm_asm_5_0_3.xml b/.idea/libraries/Maven__org_ow2_asm_asm_5_0_3.xml
new file mode 100644
index 0000000..da69f6c
--- /dev/null
+++ b/.idea/libraries/Maven__org_ow2_asm_asm_5_0_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_2.xml b/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_2.xml
new file mode 100644
index 0000000..7d29533
--- /dev/null
+++ b/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_slf4j_slf4j_log4j12_1_7_2.xml b/.idea/libraries/Maven__org_slf4j_slf4j_log4j12_1_7_2.xml
new file mode 100644
index 0000000..0dff585
--- /dev/null
+++ b/.idea/libraries/Maven__org_slf4j_slf4j_log4j12_1_7_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..d30d09e
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..65260d8
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..e76782d
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,643 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ main
+ pa
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1522909238023
+
+
+ 1522909238023
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/alibaba-mom.iml b/alibaba-mom.iml
new file mode 100644
index 0000000..c90834f
--- /dev/null
+++ b/alibaba-mom.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/classes/production/alibaba-mom/main/main1.iml b/classes/production/alibaba-mom/main/main1.iml
new file mode 100644
index 0000000..d94e561
--- /dev/null
+++ b/classes/production/alibaba-mom/main/main1.iml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/classes/production/alibaba-mom/test/test.iml b/classes/production/alibaba-mom/test/test.iml
new file mode 100644
index 0000000..21bcd68
--- /dev/null
+++ b/classes/production/alibaba-mom/test/test.iml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/middleware-mom.iml b/middleware-mom.iml
new file mode 100644
index 0000000..d6f8040
--- /dev/null
+++ b/middleware-mom.iml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/.idea/artifacts/main_jar.xml b/momtest/.idea/artifacts/main_jar.xml
new file mode 100644
index 0000000..b6c7247
--- /dev/null
+++ b/momtest/.idea/artifacts/main_jar.xml
@@ -0,0 +1,8 @@
+
+
+ $PROJECT_DIR$/out/artifacts/main_jar
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/.idea/compiler.xml b/momtest/.idea/compiler.xml
new file mode 100644
index 0000000..d440b34
--- /dev/null
+++ b/momtest/.idea/compiler.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/.idea/encodings.xml b/momtest/.idea/encodings.xml
new file mode 100644
index 0000000..1c86a4b
--- /dev/null
+++ b/momtest/.idea/encodings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/.idea/libraries/Maven__asm_asm_3_3_1.xml b/momtest/.idea/libraries/Maven__asm_asm_3_3_1.xml
new file mode 100644
index 0000000..1cf9333
--- /dev/null
+++ b/momtest/.idea/libraries/Maven__asm_asm_3_3_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/.idea/libraries/Maven__com_alibaba_fastjson_1_2_3.xml b/momtest/.idea/libraries/Maven__com_alibaba_fastjson_1_2_3.xml
new file mode 100644
index 0000000..79b4a80
--- /dev/null
+++ b/momtest/.idea/libraries/Maven__com_alibaba_fastjson_1_2_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/.idea/libraries/Maven__com_alibaba_fastjson_1_2_5.xml b/momtest/.idea/libraries/Maven__com_alibaba_fastjson_1_2_5.xml
new file mode 100644
index 0000000..adcbb0e
--- /dev/null
+++ b/momtest/.idea/libraries/Maven__com_alibaba_fastjson_1_2_5.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/.idea/libraries/Maven__com_esotericsoftware_kryo_3_0_2.xml b/momtest/.idea/libraries/Maven__com_esotericsoftware_kryo_3_0_2.xml
new file mode 100644
index 0000000..311fd9e
--- /dev/null
+++ b/momtest/.idea/libraries/Maven__com_esotericsoftware_kryo_3_0_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/.idea/libraries/Maven__com_esotericsoftware_minlog_1_3_0.xml b/momtest/.idea/libraries/Maven__com_esotericsoftware_minlog_1_3_0.xml
new file mode 100644
index 0000000..0f2bb63
--- /dev/null
+++ b/momtest/.idea/libraries/Maven__com_esotericsoftware_minlog_1_3_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/.idea/libraries/Maven__com_esotericsoftware_reflectasm_1_10_1.xml b/momtest/.idea/libraries/Maven__com_esotericsoftware_reflectasm_1_10_1.xml
new file mode 100644
index 0000000..5ea60d9
--- /dev/null
+++ b/momtest/.idea/libraries/Maven__com_esotericsoftware_reflectasm_1_10_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_5_3.xml b/momtest/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_5_3.xml
new file mode 100644
index 0000000..186af6a
--- /dev/null
+++ b/momtest/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_5_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/.idea/libraries/Maven__de_ruedigermoeller_fst_2_34.xml b/momtest/.idea/libraries/Maven__de_ruedigermoeller_fst_2_34.xml
new file mode 100644
index 0000000..d79910a
--- /dev/null
+++ b/momtest/.idea/libraries/Maven__de_ruedigermoeller_fst_2_34.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/.idea/libraries/Maven__io_netty_netty_all_4_0_23_Final.xml b/momtest/.idea/libraries/Maven__io_netty_netty_all_4_0_23_Final.xml
new file mode 100644
index 0000000..7305d82
--- /dev/null
+++ b/momtest/.idea/libraries/Maven__io_netty_netty_all_4_0_23_Final.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/.idea/libraries/Maven__junit_junit_4_7.xml b/momtest/.idea/libraries/Maven__junit_junit_4_7.xml
new file mode 100644
index 0000000..4402995
--- /dev/null
+++ b/momtest/.idea/libraries/Maven__junit_junit_4_7.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/.idea/libraries/Maven__log4j_log4j_1_2_12.xml b/momtest/.idea/libraries/Maven__log4j_log4j_1_2_12.xml
new file mode 100644
index 0000000..f398ab4
--- /dev/null
+++ b/momtest/.idea/libraries/Maven__log4j_log4j_1_2_12.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/.idea/libraries/Maven__net_minidev_asm_1_0.xml b/momtest/.idea/libraries/Maven__net_minidev_asm_1_0.xml
new file mode 100644
index 0000000..86ed0eb
--- /dev/null
+++ b/momtest/.idea/libraries/Maven__net_minidev_asm_1_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/.idea/libraries/Maven__net_minidev_json_smart_2_0.xml b/momtest/.idea/libraries/Maven__net_minidev_json_smart_2_0.xml
new file mode 100644
index 0000000..7d5bf71
--- /dev/null
+++ b/momtest/.idea/libraries/Maven__net_minidev_json_smart_2_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/.idea/libraries/Maven__org_javassist_javassist_3_19_0_GA.xml b/momtest/.idea/libraries/Maven__org_javassist_javassist_3_19_0_GA.xml
new file mode 100644
index 0000000..be983fc
--- /dev/null
+++ b/momtest/.idea/libraries/Maven__org_javassist_javassist_3_19_0_GA.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/.idea/libraries/Maven__org_objenesis_objenesis_2_1.xml b/momtest/.idea/libraries/Maven__org_objenesis_objenesis_2_1.xml
new file mode 100644
index 0000000..7ab319b
--- /dev/null
+++ b/momtest/.idea/libraries/Maven__org_objenesis_objenesis_2_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/.idea/libraries/Maven__org_ow2_asm_asm_5_0_3.xml b/momtest/.idea/libraries/Maven__org_ow2_asm_asm_5_0_3.xml
new file mode 100644
index 0000000..da69f6c
--- /dev/null
+++ b/momtest/.idea/libraries/Maven__org_ow2_asm_asm_5_0_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_2.xml b/momtest/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_2.xml
new file mode 100644
index 0000000..7d29533
--- /dev/null
+++ b/momtest/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/.idea/libraries/Maven__org_slf4j_slf4j_log4j12_1_7_2.xml b/momtest/.idea/libraries/Maven__org_slf4j_slf4j_log4j12_1_7_2.xml
new file mode 100644
index 0000000..0dff585
--- /dev/null
+++ b/momtest/.idea/libraries/Maven__org_slf4j_slf4j_log4j12_1_7_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/.idea/misc.xml b/momtest/.idea/misc.xml
new file mode 100644
index 0000000..dd307bf
--- /dev/null
+++ b/momtest/.idea/misc.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/.idea/modules.xml b/momtest/.idea/modules.xml
new file mode 100644
index 0000000..42d4c13
--- /dev/null
+++ b/momtest/.idea/modules.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/.idea/vcs.xml b/momtest/.idea/vcs.xml
new file mode 100644
index 0000000..9d44145
--- /dev/null
+++ b/momtest/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/.idea/workspace.xml b/momtest/.idea/workspace.xml
new file mode 100644
index 0000000..dc8fee4
--- /dev/null
+++ b/momtest/.idea/workspace.xml
@@ -0,0 +1,629 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1522912665643
+
+
+ 1522912665643
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ main:jar
+
+
+
+
+
+
+
+
+
+
+
+
+ No facets are configured
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.8
+
+
+
+
+
+
+
+
+
+
+
+ middleware-mom
+
+
+
+
+
+
+
+
+
+
+
+
+ Maven: com.alibaba:fastjson:1.2.3
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/middleware-momtest.iml b/momtest/middleware-momtest.iml
new file mode 100644
index 0000000..f738b22
--- /dev/null
+++ b/momtest/middleware-momtest.iml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/out/production/main/META-INF/MANIFEST.MF b/momtest/out/production/main/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..be04101
--- /dev/null
+++ b/momtest/out/production/main/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Main-Class: com.alibaba.middleware.race.mom.Broker
+
diff --git a/momtest/pom.xml b/momtest/pom.xml
new file mode 100644
index 0000000..1e210f1
--- /dev/null
+++ b/momtest/pom.xml
@@ -0,0 +1,36 @@
+
+ 4.0.0
+ com.alibaba.race
+ middleware-momtest
+ jar
+ 1.0-SNAPSHOT
+ middleware-mom
+ http://maven.apache.org
+
+
+ com.alibaba.race
+ middleware-mom
+ 1.0
+
+
+ com.alibaba
+ fastjson
+ 1.2.3
+
+
+
+
+
+ maven-compiler-plugin
+ 2.3.2
+
+ 1.6
+ 1.6
+ UTF-8
+
+
+
+
+
+
diff --git a/momtest/result b/momtest/result
new file mode 100644
index 0000000..237cbb0
--- /dev/null
+++ b/momtest/result
@@ -0,0 +1 @@
+result:false, info:/ by zero
\ No newline at end of file
diff --git a/momtest/src/main/java/META-INF/MANIFEST.MF b/momtest/src/main/java/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..be04101
--- /dev/null
+++ b/momtest/src/main/java/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Main-Class: com.alibaba.middleware.race.mom.Broker
+
diff --git a/momtest/src/main/java/com/alibaba/middleware/race/momtest/ConsumeStatus.java b/momtest/src/main/java/com/alibaba/middleware/race/momtest/ConsumeStatus.java
new file mode 100644
index 0000000..1521cbc
--- /dev/null
+++ b/momtest/src/main/java/com/alibaba/middleware/race/momtest/ConsumeStatus.java
@@ -0,0 +1,21 @@
+package com.alibaba.middleware.race.momtest;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ConsumeStatus {
+ String msgId;
+ List statusList=new ArrayList();
+ public String getMsgId() {
+ return msgId;
+ }
+ public void setMsgId(String msgId) {
+ this.msgId = msgId;
+ }
+ public List getStatusList() {
+ return statusList;
+ }
+ public void setStatusList(List statusList) {
+ this.statusList = statusList;
+ }
+}
diff --git a/momtest/src/main/java/com/alibaba/middleware/race/momtest/ConusmerTest.java b/momtest/src/main/java/com/alibaba/middleware/race/momtest/ConusmerTest.java
new file mode 100644
index 0000000..124156d
--- /dev/null
+++ b/momtest/src/main/java/com/alibaba/middleware/race/momtest/ConusmerTest.java
@@ -0,0 +1,33 @@
+package com.alibaba.middleware.race.momtest;
+
+import com.alibaba.middleware.race.mom.ConsumeResult;
+import com.alibaba.middleware.race.mom.ConsumeStatus;
+import com.alibaba.middleware.race.mom.Consumer;
+import com.alibaba.middleware.race.mom.Message;
+import com.alibaba.middleware.race.mom.MessageListener;
+
+public class ConusmerTest {
+ public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+ Consumer consumer = (Consumer) Class.forName("com.alibaba.middleware.race.mom.DefaultConsumer").newInstance();
+ //设置消费者id,groupid相同的消费者,broker会视为同一个消费者集群,每条消息只会投递给集群中的一台机器
+ consumer.setGroupId("CG-test");
+ //发起订阅操作,broker只能投递 topic为T-test,并且area属性为us的消息给消费者
+ consumer.subscribe("T-test", "area=us"/*如果改属性为null或者空串,那么表示接收这个topic下的所有消息*/, new MessageListener() {
+
+ @Override
+ public ConsumeResult onMessage(Message message) {
+ assert "T-test".equals(message.getTopic()) && "us".equals(message.getProperty("area"));
+ System.out.println("consume success:" + message.getMsgId());
+ ConsumeResult result = new ConsumeResult();
+ //设置消费结果,如果成功,那么broker不再投递
+ result.setStatus(ConsumeStatus.SUCCESS);
+ //如果设置为失败,那么broker会尽快重试投递,直至返回成功。
+ //result.setStatus(ConsumeStatus.FAIL);
+ //消费失败要设置失败原因,broker可以获取到这个信息
+ //result.setInfo("fail detail or reason");
+ return result;
+ }
+ });
+ consumer.start();
+ }
+}
diff --git a/momtest/src/main/java/com/alibaba/middleware/race/momtest/FileIO.java b/momtest/src/main/java/com/alibaba/middleware/race/momtest/FileIO.java
new file mode 100644
index 0000000..a469906
--- /dev/null
+++ b/momtest/src/main/java/com/alibaba/middleware/race/momtest/FileIO.java
@@ -0,0 +1,30 @@
+package com.alibaba.middleware.race.momtest;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.Map;
+import java.util.concurrent.ConcurrentMap;
+
+public class FileIO {
+ private static File file;
+ private static FileWriter fw;
+ static{
+ file=new File(System.getProperty("file", "result"));
+ try {
+ fw=new FileWriter(file);
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ public static void write(String text) {
+ try {
+ fw.write(text);
+ fw.flush();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/momtest/src/main/java/com/alibaba/middleware/race/momtest/FileUtil.java b/momtest/src/main/java/com/alibaba/middleware/race/momtest/FileUtil.java
new file mode 100644
index 0000000..0a79853
--- /dev/null
+++ b/momtest/src/main/java/com/alibaba/middleware/race/momtest/FileUtil.java
@@ -0,0 +1,55 @@
+package com.alibaba.middleware.race.momtest;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+
+public class FileUtil {
+ public static String read(String fileName) {
+ try {
+ File dir=new File("check");
+ if (!dir.exists()) {
+ dir.mkdirs();
+ }
+ File file=new File("check/"+fileName);
+ FileReader fReader=new FileReader(file);
+ BufferedReader bufferedReader=new BufferedReader(fReader);
+ String text=bufferedReader.readLine();
+ bufferedReader.close();
+ fReader.close();
+ return text;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+ public static void write(String fileName,String text){
+ try {
+ File dir=new File("check");
+ if (!dir.exists()) {
+ dir.mkdirs();
+ }
+ File file=new File("check/"+fileName);
+ if (file.exists()) {
+ //file.delete();
+ file=new File("check/"+fileName);
+ }
+ FileWriter fileWriter=new FileWriter(file);
+ fileWriter.write(text);
+ fileWriter.flush();
+ fileWriter.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ public static void main(String[] args) {
+ String text="hello sdfadsf";
+ String fileName="tmp";
+ FileUtil.write(fileName, text);
+ System.out.println(FileUtil.read(fileName));
+ FileUtil.write(fileName, "heloo");
+ System.out.println(FileUtil.read(fileName));
+
+ }
+}
diff --git a/momtest/src/main/java/com/alibaba/middleware/race/momtest/MomFuntionTest.java b/momtest/src/main/java/com/alibaba/middleware/race/momtest/MomFuntionTest.java
new file mode 100644
index 0000000..a5b25c6
--- /dev/null
+++ b/momtest/src/main/java/com/alibaba/middleware/race/momtest/MomFuntionTest.java
@@ -0,0 +1,192 @@
+package com.alibaba.middleware.race.momtest;
+
+import java.nio.charset.Charset;
+import java.util.Queue;
+import java.util.Random;
+import java.util.concurrent.LinkedBlockingQueue;
+
+import com.alibaba.middleware.race.mom.ConsumeResult;
+import com.alibaba.middleware.race.mom.ConsumeStatus;
+import com.alibaba.middleware.race.mom.Consumer;
+import com.alibaba.middleware.race.mom.Message;
+import com.alibaba.middleware.race.mom.MessageListener;
+import com.alibaba.middleware.race.mom.Producer;
+import com.alibaba.middleware.race.mom.SendResult;
+import com.alibaba.middleware.race.mom.SendStatus;
+
+public class MomFuntionTest {
+ private static String TOPIC="MOM-RACE-";
+ private static String PID="PID_";
+ private static String CID="CID_";
+ private static String BODY="hello mom ";
+ private static String AREA="area_";
+ private static Charset charset=Charset.forName("utf-8");
+ private static Random random=new Random();
+ private static Queue sendMsg=new LinkedBlockingQueue();
+ private static Queue recvMsg=new LinkedBlockingQueue();
+
+ private static TestResult testResult=new TestResult();
+ public static void main(String[] args) {
+ System.setProperty("SIP","127.0.0.1");
+ testBasic();
+ if (!testResult.isSuccess()) {
+ System.out.println(testResult);
+ FileIO.write(testResult.toString());
+ Runtime.getRuntime().exit(0);
+ }
+ sendMsg.clear();
+ recvMsg.clear();
+ testFilter();
+ System.out.println(testResult);
+ FileIO.write(testResult.toString());
+ Runtime.getRuntime().exit(0);
+
+ }
+ private static void testBasic() {
+ int code=random.nextInt(100000);
+ final ConsumeResult consumeResult=new ConsumeResult();
+ consumeResult.setStatus(ConsumeStatus.SUCCESS);
+ final String topic=TOPIC+code;
+ try {
+ String ip=System.getProperty("SIP");
+ Consumer consumer=(Consumer) Class.forName("com.alibaba.middleware.race.mom.DefaultConsumer").newInstance();
+ consumer.setGroupId(CID+code);
+ consumer.subscribe(topic, "", new MessageListener() {
+
+ @Override
+ public ConsumeResult onMessage(Message message) {
+ if (!message.getTopic().equals(topic)) {
+ testResult.setSuccess(false);
+ testResult.setInfo("expect topic:"+topic+", actual topic:"+message.getTopic());
+ }
+ if (System.currentTimeMillis()-message.getBornTime()>1000) {
+ testResult.setSuccess(false);
+ testResult.setInfo("msg "+message.getMsgId()+" delay "+(System.currentTimeMillis()-message.getBornTime())+" ms");
+ }
+ recvMsg.add(message.getMsgId());
+ return consumeResult;
+ }
+ });
+ consumer.start();
+ Producer producer=(Producer) Class.forName("com.alibaba.middleware.race.mom.DefaultProducer").newInstance();
+ producer.setGroupId(PID+code);
+ producer.setTopic(topic);
+ producer.start();
+ Message msg=new Message();
+ msg.setBody(BODY.getBytes(charset));
+ msg.setProperty("area", "hz"+code);
+ SendResult result=producer.sendMessage(msg);
+ if (result.getStatus()!=SendStatus.SUCCESS) {
+ testResult.setSuccess(false);
+ testResult.setInfo(result.toString());
+ return;
+ }
+ sendMsg.add(result.getMsgId());
+ Thread.sleep(5000);
+ if (!testResult.isSuccess()) {
+ System.out.println(testResult);
+ return ;
+ }
+ checkMsg(sendMsg, recvMsg);
+ producer.stop();
+ consumer.stop();
+ } catch (Exception e) {
+ testResult.setSuccess(false);
+ testResult.setInfo(e.getMessage());
+ }
+ }
+ private static void testFilter() {
+ int code=random.nextInt(100000);
+ final ConsumeResult consumeResult=new ConsumeResult();
+ consumeResult.setStatus(ConsumeStatus.SUCCESS);
+ final String topic=TOPIC+code;
+ final String k=AREA+code;
+ final String v="hz_"+code;
+ try {
+ String ip=System.getProperty("SIP");
+ Consumer consumer=(Consumer) Class.forName("com.alibaba.middleware.race.mom.DefaultConsumer").newInstance();
+ consumer.setGroupId(CID+code);
+ consumer.subscribe(topic, k+"="+v, new MessageListener() {
+
+ @Override
+ public ConsumeResult onMessage(Message message) {
+ if (!message.getTopic().equals(topic)) {
+ testResult.setSuccess(false);
+ testResult.setInfo("expect topic:"+topic+", actual topic:"+message.getTopic());
+ }
+ if (System.currentTimeMillis()-message.getBornTime()>1000) {
+ testResult.setSuccess(false);
+ testResult.setInfo("msg "+message.getMsgId()+" delay "+(System.currentTimeMillis()-message.getBornTime())+" ms");
+ }
+ if (message.getProperty(k)==null||!message.getProperty(k).equals(v)) {
+ testResult.setSuccess(false);
+ testResult.setInfo("msg "+message.getMsgId()+" expect k"+k+" value is "+ v+", but actual value is "+message.getProperty(k));
+ }
+ recvMsg.add(message.getMsgId());
+ return consumeResult;
+ }
+ });
+ consumer.start();
+ Producer producer=(Producer) Class.forName("com.alibaba.middleware.race.mom.DefaultProducer").newInstance();
+ producer.setGroupId(PID+code);
+ producer.setTopic(topic);
+ producer.start();
+ Message msg=new Message();
+ msg.setBody(BODY.getBytes(charset));
+ msg.setProperty(k, v);
+ SendResult result=producer.sendMessage(msg);
+ if (result.getStatus()!=SendStatus.SUCCESS) {
+ testResult.setSuccess(false);
+ testResult.setInfo(result.toString());
+ return;
+ }
+ sendMsg.add(result.getMsgId());
+ msg=new Message();
+ msg.setBody(BODY.getBytes(charset));
+ result=producer.sendMessage(msg);
+ if (result.getStatus()!=SendStatus.SUCCESS) {
+ testResult.setSuccess(false);
+ testResult.setInfo(result.toString());
+ return;
+ }
+ Thread.sleep(5000);
+ if (!testResult.isSuccess()) {
+ return;
+ }
+ checkMsg(sendMsg, recvMsg);
+ return;
+
+
+ } catch (Exception e) {
+ testResult.setSuccess(false);
+ testResult.setInfo(e.getMessage());
+ }
+ }
+ private static void checkMsg(Queue sendMsg,Queue recvMsg){
+ if (sendMsg.size()>recvMsg.size()) {
+ testResult.setSuccess(false);
+ testResult.setInfo("send msg num is "+sendMsg.size()+",but recv msg num is "+recvMsg.size());
+ return ;
+ }
+ if ((recvMsg.size()-sendMsg.size())/sendMsg.size()>0.001) {
+ testResult.setSuccess(false);
+ testResult.setInfo("repeat rate too big "+(recvMsg.size()-sendMsg.size())/sendMsg.size());
+ return ;
+ }
+ for (String send : sendMsg) {
+ boolean find=false;
+ for (String recv : recvMsg) {
+ if (recv.equals(send)) {
+ find=true;
+ break;
+ }
+ }
+ if (!find) {
+ testResult.setSuccess(false);
+ testResult.setInfo("msg "+send+" is miss");
+ return ;
+ }
+ }
+
+ }
+}
diff --git a/momtest/src/main/java/com/alibaba/middleware/race/momtest/MomStressTest.java b/momtest/src/main/java/com/alibaba/middleware/race/momtest/MomStressTest.java
new file mode 100644
index 0000000..c8cd06a
--- /dev/null
+++ b/momtest/src/main/java/com/alibaba/middleware/race/momtest/MomStressTest.java
@@ -0,0 +1,220 @@
+package com.alibaba.middleware.race.momtest;
+
+import java.nio.charset.Charset;
+import java.util.Queue;
+import java.util.Random;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.atomic.AtomicLong;
+
+import com.alibaba.middleware.race.mom.ConsumeResult;
+import com.alibaba.middleware.race.mom.ConsumeStatus;
+import com.alibaba.middleware.race.mom.Consumer;
+import com.alibaba.middleware.race.mom.Message;
+import com.alibaba.middleware.race.mom.MessageListener;
+import com.alibaba.middleware.race.mom.Producer;
+import com.alibaba.middleware.race.mom.SendCallback;
+import com.alibaba.middleware.race.mom.SendResult;
+import com.alibaba.middleware.race.mom.SendStatus;
+
+public class MomStressTest {
+ private static String TOPIC="MOM-RACE-";
+ private static String PID="PID_";
+ private static String CID="CID_";
+ private static String BODY="hello mom ";
+ private static String AREA="area_";
+ private static Charset charset=Charset.forName("utf-8");
+ private static Random random=new Random();
+ private static AtomicLong sendCount=new AtomicLong();
+ private static AtomicLong recvCount=new AtomicLong();
+ private static AtomicLong totalRT=new AtomicLong();
+ private static AtomicLong totalDelay=new AtomicLong();
+ private static int c=Integer.valueOf(System.getProperty("C","30"));
+ private static ExecutorService executorService=Executors.newFixedThreadPool(c);
+
+ private static TestResult testResult=new TestResult();
+ public static void main(String[] args) {
+ testBasic();
+ if (!testResult.isSuccess()) {
+ System.out.println(testResult);
+ FileIO.write(testResult.toString());
+ Runtime.getRuntime().exit(0);
+ }
+ System.out.println(testResult);
+ FileIO.write(testResult.toString());
+ Runtime.getRuntime().exit(0);
+ }
+ private static void testBasic() {
+ final int code=random.nextInt(100000);
+ final ConsumeResult consumeResult=new ConsumeResult();
+ consumeResult.setStatus(ConsumeStatus.SUCCESS);
+ final String topic=TOPIC+code;
+ try {
+ String ip=System.getProperty("SIP");
+ Consumer consumer=(Consumer) Class.forName("com.alibaba.middleware.race.mom.DefaultConsumer").newInstance();
+ consumer.setGroupId(CID+code);
+ consumer.subscribe(topic, "", new MessageListener() {
+
+ @Override
+ public ConsumeResult onMessage(Message message) {
+ if (!message.getTopic().equals(topic)) {
+ testResult.setSuccess(false);
+ testResult.setInfo("expect topic:"+topic+", actual topic:"+message.getTopic());
+ }
+ long delay=System.currentTimeMillis()-message.getBornTime();
+/* if (delay>1000) {
+ testResult.setSuccess(false);
+ testResult.setInfo("msg "+message.getMsgId()+" delay "+(System.currentTimeMillis()-message.getBornTime())+" ms");
+ }*/
+ totalDelay.addAndGet(delay);
+ recvCount.incrementAndGet();
+ return consumeResult;
+ }
+ });
+ consumer.start();
+ final Producer producer=(Producer) Class.forName("com.alibaba.middleware.race.mom.DefaultProducer").newInstance();
+ producer.setGroupId(PID+code);
+ producer.setTopic(topic);
+ producer.start();
+ long start=System.currentTimeMillis();
+ for (int i = 0; i < c; i++) {
+ executorService.execute(new Runnable() {
+
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ Message msg=new Message();
+ msg.setBody(BODY.getBytes(charset));
+ msg.setProperty("area", "hz"+code);
+ final long startRt=System.currentTimeMillis();
+ SendResult result=producer.sendMessage(msg);
+ if (result.getStatus()==SendStatus.SUCCESS) {
+ sendCount.incrementAndGet();
+ totalRT.addAndGet(System.currentTimeMillis()-startRt);
+ }
+ /*producer.asyncSendMessage(msg, new SendCallback() {
+
+ @Override
+ public void onResult(SendResult result) {
+ if (result.getStatus()==SendStatus.SUCCESS) {
+ sendCount.incrementAndGet();
+ totalRT.addAndGet(System.currentTimeMillis()-startRt);
+ }
+ }
+ });*/
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ }
+ });
+ }
+ Thread.sleep(30000);
+ if (!testResult.isSuccess()) {
+ return ;
+ }
+ long totalTime=System.currentTimeMillis()-start;
+ long sendTps=sendCount.get()*1000/totalTime;
+ long recvTps=recvCount.get()*1000/totalTime;
+ long rt=totalRT.get()/sendCount.get();
+ long delay=totalDelay.get()/recvCount.get();
+ testResult.setInfo("send tps:"+sendTps+", recv tps:"+recvTps+", send rt:"+rt+", avg delay:"+delay);
+
+ } catch (Exception e) {
+ testResult.setSuccess(false);
+ testResult.setInfo(e.getMessage());
+ }
+ }
+ private static void testFilter() {
+ int code=random.nextInt(100000);
+ final ConsumeResult consumeResult=new ConsumeResult();
+ consumeResult.setStatus(ConsumeStatus.SUCCESS);
+ final String topic=TOPIC+code;
+ final String k=AREA+code;
+ final String v="hz_"+code;
+ try {
+ String ip=System.getProperty("SIP");
+ Consumer consumer=(Consumer) Class.forName("com.alibaba.middleware.race.mom.DefaultConsumer").newInstance();
+ consumer.setGroupId(CID+code);
+ consumer.subscribe(topic, k+"="+v, new MessageListener() {
+
+ @Override
+ public ConsumeResult onMessage(Message message) {
+ if (!message.getTopic().equals(topic)) {
+ testResult.setSuccess(false);
+ testResult.setInfo("expect topic:"+topic+", actual topic:"+message.getTopic());
+ }
+ if (System.currentTimeMillis()-message.getBornTime()>1000) {
+ testResult.setSuccess(false);
+ testResult.setInfo("msg "+message.getMsgId()+" delay "+(System.currentTimeMillis()-message.getBornTime())+" ms");
+ }
+ if (!message.getProperty(k).equals(v)) {
+ testResult.setSuccess(false);
+ testResult.setInfo("msg "+message.getMsgId()+" expect k"+k+" value is "+ v+", but actual value is "+message.getProperty(k));
+ }
+ return consumeResult;
+ }
+ });
+ consumer.start();
+ Producer producer=(Producer) Class.forName("com.alibaba.middleware.race.mom.DefaultProducer").newInstance();
+ producer.setGroupId(PID+code);
+ producer.setTopic(topic);
+ producer.start();
+ Message msg=new Message();
+ msg.setBody(BODY.getBytes(charset));
+ msg.setProperty(k, v);
+ SendResult result=producer.sendMessage(msg);
+ if (result.getStatus()!=SendStatus.SUCCESS) {
+ testResult.setSuccess(false);
+ testResult.setInfo(result.toString());
+ return;
+ }
+ msg=new Message();
+ msg.setBody(BODY.getBytes(charset));
+ result=producer.sendMessage(msg);
+ if (result.getStatus()!=SendStatus.SUCCESS) {
+ testResult.setSuccess(false);
+ testResult.setInfo(result.toString());
+ return;
+ }
+ Thread.sleep(5000);
+ if (!testResult.isSuccess()) {
+ return ;
+ }
+
+
+ } catch (Exception e) {
+ testResult.setSuccess(false);
+ testResult.setInfo(e.getMessage());
+ }
+ }
+ private static void checkMsg(Queue sendMsg,Queue recvMsg){
+ if (sendMsg.size()>recvMsg.size()) {
+ testResult.setSuccess(false);
+ testResult.setInfo("send msg num is "+sendMsg.size()+",but recv msg num is "+recvMsg.size());
+ return ;
+ }
+ if ((recvMsg.size()-sendMsg.size())/sendMsg.size()>0.001) {
+ testResult.setSuccess(false);
+ testResult.setInfo("repeat rate too big "+(recvMsg.size()-sendMsg.size())/sendMsg.size());
+ return ;
+ }
+ for (String send : sendMsg) {
+ boolean find=false;
+ for (String recv : recvMsg) {
+ if (recv.equals(send)) {
+ find=true;
+ break;
+ }
+ }
+ if (!find) {
+ testResult.setSuccess(false);
+ testResult.setInfo("msg "+send+" is miss");
+ return ;
+ }
+ }
+
+ }
+}
diff --git a/momtest/src/main/java/com/alibaba/middleware/race/momtest/ProducerAsyncTest.java b/momtest/src/main/java/com/alibaba/middleware/race/momtest/ProducerAsyncTest.java
new file mode 100644
index 0000000..823ed6f
--- /dev/null
+++ b/momtest/src/main/java/com/alibaba/middleware/race/momtest/ProducerAsyncTest.java
@@ -0,0 +1,30 @@
+package com.alibaba.middleware.race.momtest;
+
+import com.alibaba.middleware.race.mom.Message;
+import com.alibaba.middleware.race.mom.Producer;
+import com.alibaba.middleware.race.mom.SendCallback;
+import com.alibaba.middleware.race.mom.SendResult;
+import com.alibaba.middleware.race.mom.SendStatus;
+
+public class ProducerAsyncTest {
+ public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+ Producer producer=(Producer) Class.forName("com.alibaba.middleware.race.mom.DefaultProducer").newInstance();
+ producer.setGroupId("PG-test");
+ producer.setTopic("T-test");
+ producer.start();
+ Message message=new Message();
+ message.setBody("Hello MOM".getBytes());
+ message.setProperty("area", "us");
+ //调用此方法,当前线程不阻塞
+ producer.asyncSendMessage(message, new SendCallback() {
+
+ @Override
+ public void onResult(SendResult result) {
+ if (result.getStatus().equals(SendStatus.SUCCESS)) {
+ System.out.println("send success:"+result.getMsgId());
+ }
+ }
+ });
+
+ }
+}
diff --git a/momtest/src/main/java/com/alibaba/middleware/race/momtest/ProducerTest.java b/momtest/src/main/java/com/alibaba/middleware/race/momtest/ProducerTest.java
new file mode 100644
index 0000000..e32fb22
--- /dev/null
+++ b/momtest/src/main/java/com/alibaba/middleware/race/momtest/ProducerTest.java
@@ -0,0 +1,23 @@
+package com.alibaba.middleware.race.momtest;
+
+import com.alibaba.middleware.race.mom.Message;
+import com.alibaba.middleware.race.mom.Producer;
+import com.alibaba.middleware.race.mom.SendResult;
+import com.alibaba.middleware.race.mom.SendStatus;
+
+public class ProducerTest {
+ public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+ System.setProperty("SIP","127.0.0.1");
+ Producer producer=(Producer) Class.forName("com.alibaba.middleware.race.mom.DefaultProducer").newInstance();
+ producer.setGroupId("PG-test");
+ producer.setTopic("T-test");
+ producer.start();
+ Message message=new Message();
+ message.setBody("Hello MOM".getBytes());
+ message.setProperty("area", "us");
+ SendResult result=producer.sendMessage(message);
+ if (result.getStatus().equals(SendStatus.SUCCESS)) {
+ System.out.println("send success:"+result.getMsgId());
+ }
+ }
+}
diff --git a/momtest/src/main/java/com/alibaba/middleware/race/momtest/PubSubTest.java b/momtest/src/main/java/com/alibaba/middleware/race/momtest/PubSubTest.java
new file mode 100644
index 0000000..0c87a6e
--- /dev/null
+++ b/momtest/src/main/java/com/alibaba/middleware/race/momtest/PubSubTest.java
@@ -0,0 +1,245 @@
+package com.alibaba.middleware.race.momtest;
+
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.concurrent.ConcurrentHashMap;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.middleware.race.mom.ConsumeResult;
+import com.alibaba.middleware.race.mom.ConsumeStatus;
+import com.alibaba.middleware.race.mom.Consumer;
+import com.alibaba.middleware.race.mom.Message;
+import com.alibaba.middleware.race.mom.MessageListener;
+import com.alibaba.middleware.race.mom.Producer;
+import com.alibaba.middleware.race.mom.SendResult;
+import com.alibaba.middleware.race.mom.SendStatus;
+
+/**
+ * 多个订阅者,按照不同的条件,订阅同一个topic的消息
+ * 通过调整代码和重启broker或者client来模拟所有功能点
+ *
+ * @author longji
+ *
+ */
+public class PubSubTest {
+ private static Charset charset = Charset.forName("utf-8");
+ private static Random random = new Random();
+ private static String seed = "22";// String.valueOf(random.nextInt(10000));
+ private static String TOPIC = "MOM-RACE-" + seed;
+ private static String PID = "PID_" + seed;
+ private static String CID = "CID_" + seed;
+ private static String BODY = "hello mom " + seed;
+ private static String AREA = "area" + seed;
+ private static String CATID = "cid" + seed;
+ private static String BIZID = "bid";
+ private static List toA = new ArrayList();
+ private static List toB = new ArrayList();
+ private static List toC = new ArrayList();
+ private static ConcurrentHashMap> amap = new ConcurrentHashMap>();
+ private static ConcurrentHashMap> bmap = new ConcurrentHashMap>();
+ private static ConcurrentHashMap> cmap = new ConcurrentHashMap>();
+ private static volatile boolean isRunning=true;
+ public static void main(String[] args) throws InterruptedException, InstantiationException, IllegalAccessException, ClassNotFoundException {
+ System.setProperty("SIP", "127.0.0.1");
+ //这些会记录所有的发送记录和消费记录,用于对账
+ String toAs = FileUtil.read("toA");
+ String toBs = FileUtil.read("toB");
+ String toCs = FileUtil.read("toC");
+ String amaps = FileUtil.read("amap");
+ String bmaps = FileUtil.read("bmap");
+ String cmaps = FileUtil.read("cmap");
+ if (toAs != null) {
+ toA = JSONArray.parseArray(toAs, String.class);
+ }
+ if (toBs != null) {
+ toB = JSONArray.parseArray(toBs, String.class);
+ }
+ if (toCs != null) {
+ toC = JSONArray.parseArray(toCs, String.class);
+ }
+ if (amaps != null) {
+ amap = JSON.parseObject(amaps, ConcurrentHashMap.class);
+ }
+ if (bmaps != null) {
+ bmap = JSON.parseObject(bmaps, ConcurrentHashMap.class);
+ }
+ if (cmaps != null) {
+ cmap = JSON.parseObject(cmaps, ConcurrentHashMap.class);
+ }
+
+ Consumer consumerA = (Consumer) Class.forName("com.alibaba.middleware.race.mom.DefaultConsumer").newInstance();
+ consumerA.setGroupId(CID + "A");
+ // /A 消费所有消息
+ consumerA.subscribe(TOPIC, "", new MessageListener() {
+
+ @Override
+ public ConsumeResult onMessage(Message message) {
+ ConsumeResult result = new ConsumeResult();
+ if (!isRunning) {
+ return result;
+ }
+ if (!TOPIC.equals(message.getTopic())) {
+ System.out.println("wrong topic-" + message.getTopic());
+ }
+ result.setStatus(ConsumeStatus.SUCCESS);
+
+ List value = new ArrayList();
+ List oldValue = amap.putIfAbsent(message.getProperty(BIZID), value);
+ if (oldValue != null) {
+ oldValue.add(Boolean.TRUE);
+ } else {
+ value.add(Boolean.TRUE);
+ }
+ return result;
+ }
+ });
+ consumerA.start();
+
+ Consumer consumerB = (Consumer) Class.forName("com.alibaba.middleware.race.mom.DefaultConsumer").newInstance();
+ consumerB.setGroupId(CID + "B");
+ // /B 消费AREA+seed+"="+seed
+ consumerB.subscribe(TOPIC, AREA + "=" + seed, new MessageListener() {
+
+ @Override
+ public ConsumeResult onMessage(Message message) {
+ ConsumeResult result = new ConsumeResult();
+ if (!isRunning) {
+ return result;
+ }
+ if (!TOPIC.equals(message.getTopic())) {
+ System.out.println("wrong topic-" + message.getTopic());
+ }
+ if (!seed.equals(message.getProperty(AREA))) {
+ System.out.println("wrong area-" + message.getProperty(AREA));
+ }
+ result.setStatus(ConsumeStatus.SUCCESS);
+
+ List value = new ArrayList();
+ List oldValue = bmap.putIfAbsent(message.getProperty(BIZID), value);
+ if (oldValue != null) {
+ oldValue.add(Boolean.TRUE);
+ } else {
+ value.add(Boolean.TRUE);
+ }
+ return result;
+ }
+ });
+ consumerB.start();
+ Consumer consumerC = (Consumer) Class.forName("com.alibaba.middleware.race.mom.DefaultConsumer").newInstance();
+ consumerC.setGroupId(CID + "C");
+ // /C 消费CATID+seed+"="+seed
+ consumerC.subscribe(TOPIC, CATID + "=" + seed, new MessageListener() {
+
+ @Override
+ public ConsumeResult onMessage(Message message) {
+ ConsumeResult result = new ConsumeResult();
+ if (!isRunning) {
+ return result;
+ }
+ //重启broker来观察,是否能否自动重连
+ System.out.println(message.getProperty(BIZID));
+ if (!TOPIC.equals(message.getTopic())) {
+ System.out.println("wrong topic-" + message.getTopic());
+ }
+ if (!seed.equals(message.getProperty(CATID))) {
+ System.out.println("wrong CATID-" + message.getProperty(CATID));
+ }
+ //此处注释模拟消费失败
+ result.setStatus(ConsumeStatus.FAIL);
+ //result.setStatus(ConsumeStatus.SUCCESS);
+ List value = new ArrayList();
+ List oldValue = cmap.putIfAbsent(message.getProperty(BIZID), value);
+ if (oldValue != null) {
+ oldValue.add(result.getStatus()==ConsumeStatus.SUCCESS?true:false);
+ } else {
+ value.add(result.getStatus()==ConsumeStatus.SUCCESS?true:false);
+ }
+ return result;
+ }
+ });
+ //本行可以注释,来模拟c不在线
+ consumerC.start();
+
+ Producer producer = (Producer) Class.forName("com.alibaba.middleware.race.mom.DefaultProducer").newInstance();
+ producer.setGroupId(PID);
+ producer.setTopic(TOPIC);
+ producer.start();
+ //此处控制发送量
+ for (int i = 0; i < 10; i++) {
+ Message message = new Message();
+ message.setBody((BODY + i).getBytes(charset));
+ message.setTopic(TOPIC);
+ String bizId = UniqId.getInstance().getUniqIDHashString();
+ message.setProperty(BIZID, bizId);
+ toA.add(bizId);
+ if (i % 2 == 0) {
+ message.setProperty(AREA, seed);
+ toB.add(bizId);
+ }
+ if (i % 8 == 0) {
+ message.setProperty(CATID, seed);
+ toC.add(bizId);
+ }
+ SendResult result = producer.sendMessage(message);
+ if (result.getStatus() == SendStatus.FAIL) {
+ System.out.println("fail:" + bizId);
+ }
+ }
+ //改变大小,来模拟客户端在线,broker重启,客户端重连
+ Thread.sleep(5000L);
+ isRunning=false;
+ Thread.sleep(2000L);
+ FileUtil.write("toA", JSON.toJSONString(toA));
+ FileUtil.write("toB", JSON.toJSONString(toB));
+ FileUtil.write("toC", JSON.toJSONString(toC));
+ FileUtil.write("amap", JSON.toJSONString(amap));
+ FileUtil.write("bmap", JSON.toJSONString(bmap));
+ FileUtil.write("cmap", JSON.toJSONString(cmap));
+ System.out.println(toA.size()+"--A--"+amap.size());
+ System.out.println(toB.size()+"--B--"+bmap.size());
+ System.out.println(toC.size()+"--C--"+cmap.size());
+ for (String string : toA) {
+ if (!amap.containsKey(string)) {
+ System.out.println("a miss " + string);
+ } else if (amap.get(string).size() > 1) {
+ List ackList = amap.get(string);
+ for (int i = 0; i < ackList.size(); i++) {
+ if (ackList.get(i).booleanValue() && i < ackList.size()-1) {
+ System.out.println("a reapeat " + string);
+ }
+ }
+ }
+
+ }
+ for (String string : toB) {
+ if (!bmap.containsKey(string)) {
+ System.out.println("b miss " + string);
+ } else if (bmap.get(string).size() > 1) {
+ List ackList = bmap.get(string);
+ for (int i = 0; i < ackList.size(); i++) {
+ if (ackList.get(i).booleanValue() && i < ackList.size()-1) {
+ System.out.println("b reapeat " + string);
+ }
+ }
+ }
+ }
+ for (String string : toC) {
+ if (!cmap.containsKey(string)) {
+ System.out.println("c miss " + string);
+ } else if (cmap.get(string).size() > 1) {
+ List ackList = cmap.get(string);
+ for (int i = 0; i < ackList.size(); i++) {
+ if (ackList.get(i).booleanValue() && i < ackList.size()-1) {
+ System.out.println("c reapeat " + string);
+ }
+ }
+ }
+ }
+ System.out.println("finish ");
+ System.exit(0);
+ }
+}
diff --git a/momtest/src/main/java/com/alibaba/middleware/race/momtest/TestResult.java b/momtest/src/main/java/com/alibaba/middleware/race/momtest/TestResult.java
new file mode 100644
index 0000000..1b21262
--- /dev/null
+++ b/momtest/src/main/java/com/alibaba/middleware/race/momtest/TestResult.java
@@ -0,0 +1,27 @@
+package com.alibaba.middleware.race.momtest;
+
+import java.util.Date;
+
+public class TestResult {
+ private boolean isSuccess=true;
+ private String info;
+ public boolean isSuccess() {
+ return isSuccess;
+ }
+ public void setSuccess(boolean isSuccess) {
+ this.isSuccess = isSuccess;
+ }
+ public String getInfo() {
+ return info;
+ }
+ public void setInfo(String info) {
+ this.info = info;
+ }
+ @Override
+ public String toString() {
+ return "result:"+isSuccess+", info:"+info;
+ }
+ public static void main(String[] args) {
+ System.out.println(new Date(1436787640930L));
+ }
+}
diff --git a/momtest/src/main/java/com/alibaba/middleware/race/momtest/UniqId.java b/momtest/src/main/java/com/alibaba/middleware/race/momtest/UniqId.java
new file mode 100644
index 0000000..b3d5fdc
--- /dev/null
+++ b/momtest/src/main/java/com/alibaba/middleware/race/momtest/UniqId.java
@@ -0,0 +1,255 @@
+package com.alibaba.middleware.race.momtest;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.InetAddress;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Random;
+import java.util.concurrent.atomic.AtomicLong;
+
+
+
+/**
+ * @author huangshang
+ *
+ */
+public class UniqId {
+
+ private static char[] digits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
+
+ private static Map rDigits = new HashMap(16);
+ static {
+ for (int i = 0; i < digits.length; ++i) {
+ rDigits.put(digits[i], i);
+ }
+ }
+
+ private static UniqId me = new UniqId();
+ private String hostAddr;
+ private final Random random = new Random();
+ private final static ThreadLocal mHasher = new ThreadLocal();
+ private final UniqTimer timer = new UniqTimer();
+
+// private final ReentrantLock opLock = new ReentrantLock();
+
+
+ private UniqId() {
+ try {
+ InetAddress addr = InetAddress.getLocalHost();
+
+ this.hostAddr = addr.getHostAddress();
+ }
+ catch (IOException e) {
+ this.hostAddr = String.valueOf(System.currentTimeMillis());
+ }
+
+ if (this.hostAddr==null||hostAddr.isEmpty() || "127.0.0.1".equals(this.hostAddr)) {
+ this.hostAddr = String.valueOf(System.currentTimeMillis());
+ }
+
+
+ }
+
+
+ /**
+ * ��ȡUniqIDʵ��
+ *
+ * @return UniqId
+ */
+ public static UniqId getInstance() {
+ return me;
+ }
+
+
+ /**
+ * ��ò����ظ��ĺ�����
+ *
+ * @return
+ */
+ public long getUniqTime() {
+ return this.timer.getCurrentTime();
+ }
+
+
+ /**
+ * ���UniqId
+ *
+ * @return uniqTime-randomNum-hostAddr-threadId
+ */
+ public String getUniqID() {
+ StringBuffer sb = new StringBuffer();
+ long t = this.timer.getCurrentTime();
+
+ sb.append(t);
+
+ sb.append("-");
+
+ sb.append(this.random.nextInt(8999) + 1000);
+
+ sb.append("-");
+ sb.append(this.hostAddr);
+
+ sb.append("-");
+ sb.append(Thread.currentThread().hashCode());
+
+
+ return sb.toString();
+ }
+
+
+ /**
+ * ��ȡMD5֮���uniqId string
+ *
+ * @return uniqId md5 string
+ */
+ public String getUniqIDHashString() {
+ return this.hashString(this.getUniqID());
+ }
+
+
+ /**
+ * ��ȡMD5֮���uniqId
+ *
+ * @return byte[16]
+ */
+ public byte[] getUniqIDHash() {
+ return this.hash(this.getUniqID());
+ }
+
+ private static MessageDigest getHasher() {
+ if (mHasher.get() != null) {
+ return mHasher.get();
+ } else {
+ MessageDigest tempHasher = null;
+ try {
+ tempHasher = MessageDigest.getInstance("MD5");
+ } catch (NoSuchAlgorithmException nex) {
+ // FIXME shenxun: in this case , tempHasher will be null , then
+ // all the other methods will throw NPE .
+ tempHasher = null;
+ }
+ mHasher.set(tempHasher);
+ }
+ return mHasher.get();
+ }
+ /**
+ * ���ַ�������md5
+ *
+ * @param str
+ * @return md5 byte[16]
+ */
+ public byte[] hash(String str) {
+ try {
+ byte[] bt = getHasher().digest(str.getBytes("UTF-8"));
+ if (null == bt || bt.length != 16) {
+ throw new IllegalArgumentException("md5 need");
+ }
+ return bt;
+ }
+ catch (UnsupportedEncodingException e) {
+ throw new RuntimeException("unsupported utf-8 encoding", e);
+ }
+ }
+
+
+ /**
+ * �Զ��������ݽ���md5
+ *
+ * @param str
+ * @return md5 byte[16]
+ */
+ public byte[] hash(byte[] data) {
+ byte[] bt = getHasher().digest(data);
+ if (null == bt || bt.length != 16) {
+ throw new IllegalArgumentException("md5 need");
+ }
+ return bt;
+ }
+
+
+ /**
+ * ���ַ�������md5 string
+ *
+ * @param str
+ * @return md5 string
+ */
+ public String hashString(String str) {
+ byte[] bt = this.hash(str);
+ return this.bytes2string(bt);
+ }
+
+
+ /**
+ * ���ֽ�������md5 string
+ *
+ * @param str
+ * @return md5 string
+ */
+ public String hashBytes(byte[] str) {
+ byte[] bt = this.hash(str);
+ return this.bytes2string(bt);
+ }
+
+
+ /**
+ * ��һ���ֽ�����ת��Ϊ�ɼ����ַ���
+ *
+ * @param bt
+ * @return
+ */
+ public String bytes2string(byte[] bt) {
+ if (bt == null) {
+ return null;
+ }
+ int l = bt.length;
+
+ char[] out = new char[l << 1];
+
+ for (int i = 0, j = 0; i < l; i++) {
+ out[j++] = digits[(0xF0 & bt[i]) >>> 4];
+ out[j++] = digits[0x0F & bt[i]];
+ }
+ return new String(out);
+ }
+
+
+ /**
+ * ���ַ���ת��Ϊbytes
+ *
+ * @param str
+ * @return byte[]
+ */
+ public byte[] string2bytes(String str) {
+ if (null == str) {
+ throw new NullPointerException("����������");
+ }
+ if (str.length() != 32) {
+ throw new IllegalArgumentException("�ַ������ȱ�����32");
+ }
+ byte[] data = new byte[16];
+ char[] chs = str.toCharArray();
+ for (int i = 0; i < 16; ++i) {
+ int h = rDigits.get(chs[i * 2]).intValue();
+ int l = rDigits.get(chs[i * 2 + 1]).intValue();
+ data[i] = (byte) ((h & 0x0F) << 4 | l & 0x0F);
+ }
+ return data;
+ }
+
+ /**
+ * ʵ�ֲ��ظ���ʱ��
+ *
+ * @author dogun
+ */
+ private static class UniqTimer {
+ private final AtomicLong lastTime = new AtomicLong(System.currentTimeMillis());
+
+
+ public long getCurrentTime() {
+ return this.lastTime.incrementAndGet();
+ }
+ }
+}
diff --git a/momtest/src/main/main.iml b/momtest/src/main/main.iml
new file mode 100644
index 0000000..73668ef
--- /dev/null
+++ b/momtest/src/main/main.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/momtest/target/classes/com/alibaba/middleware/race/momtest/ConsumeStatus.class b/momtest/target/classes/com/alibaba/middleware/race/momtest/ConsumeStatus.class
new file mode 100644
index 0000000..82595c3
Binary files /dev/null and b/momtest/target/classes/com/alibaba/middleware/race/momtest/ConsumeStatus.class differ
diff --git a/momtest/target/classes/com/alibaba/middleware/race/momtest/ConusmerTest$1.class b/momtest/target/classes/com/alibaba/middleware/race/momtest/ConusmerTest$1.class
new file mode 100644
index 0000000..c1c81e7
Binary files /dev/null and b/momtest/target/classes/com/alibaba/middleware/race/momtest/ConusmerTest$1.class differ
diff --git a/momtest/target/classes/com/alibaba/middleware/race/momtest/ConusmerTest.class b/momtest/target/classes/com/alibaba/middleware/race/momtest/ConusmerTest.class
new file mode 100644
index 0000000..c0dd3b2
Binary files /dev/null and b/momtest/target/classes/com/alibaba/middleware/race/momtest/ConusmerTest.class differ
diff --git a/momtest/target/classes/com/alibaba/middleware/race/momtest/FileIO.class b/momtest/target/classes/com/alibaba/middleware/race/momtest/FileIO.class
new file mode 100644
index 0000000..1dd5f32
Binary files /dev/null and b/momtest/target/classes/com/alibaba/middleware/race/momtest/FileIO.class differ
diff --git a/momtest/target/classes/com/alibaba/middleware/race/momtest/FileUtil.class b/momtest/target/classes/com/alibaba/middleware/race/momtest/FileUtil.class
new file mode 100644
index 0000000..2069e3c
Binary files /dev/null and b/momtest/target/classes/com/alibaba/middleware/race/momtest/FileUtil.class differ
diff --git a/momtest/target/classes/com/alibaba/middleware/race/momtest/MomFuntionTest$1.class b/momtest/target/classes/com/alibaba/middleware/race/momtest/MomFuntionTest$1.class
new file mode 100644
index 0000000..5c61fef
Binary files /dev/null and b/momtest/target/classes/com/alibaba/middleware/race/momtest/MomFuntionTest$1.class differ
diff --git a/momtest/target/classes/com/alibaba/middleware/race/momtest/MomFuntionTest$2.class b/momtest/target/classes/com/alibaba/middleware/race/momtest/MomFuntionTest$2.class
new file mode 100644
index 0000000..ca8f2cf
Binary files /dev/null and b/momtest/target/classes/com/alibaba/middleware/race/momtest/MomFuntionTest$2.class differ
diff --git a/momtest/target/classes/com/alibaba/middleware/race/momtest/MomFuntionTest.class b/momtest/target/classes/com/alibaba/middleware/race/momtest/MomFuntionTest.class
new file mode 100644
index 0000000..e9a3729
Binary files /dev/null and b/momtest/target/classes/com/alibaba/middleware/race/momtest/MomFuntionTest.class differ
diff --git a/momtest/target/classes/com/alibaba/middleware/race/momtest/MomStressTest$1.class b/momtest/target/classes/com/alibaba/middleware/race/momtest/MomStressTest$1.class
new file mode 100644
index 0000000..b2d142f
Binary files /dev/null and b/momtest/target/classes/com/alibaba/middleware/race/momtest/MomStressTest$1.class differ
diff --git a/momtest/target/classes/com/alibaba/middleware/race/momtest/MomStressTest$2.class b/momtest/target/classes/com/alibaba/middleware/race/momtest/MomStressTest$2.class
new file mode 100644
index 0000000..6b9e04e
Binary files /dev/null and b/momtest/target/classes/com/alibaba/middleware/race/momtest/MomStressTest$2.class differ
diff --git a/momtest/target/classes/com/alibaba/middleware/race/momtest/MomStressTest$3.class b/momtest/target/classes/com/alibaba/middleware/race/momtest/MomStressTest$3.class
new file mode 100644
index 0000000..2072f73
Binary files /dev/null and b/momtest/target/classes/com/alibaba/middleware/race/momtest/MomStressTest$3.class differ
diff --git a/momtest/target/classes/com/alibaba/middleware/race/momtest/MomStressTest.class b/momtest/target/classes/com/alibaba/middleware/race/momtest/MomStressTest.class
new file mode 100644
index 0000000..f8ec683
Binary files /dev/null and b/momtest/target/classes/com/alibaba/middleware/race/momtest/MomStressTest.class differ
diff --git a/momtest/target/classes/com/alibaba/middleware/race/momtest/ProducerAsyncTest$1.class b/momtest/target/classes/com/alibaba/middleware/race/momtest/ProducerAsyncTest$1.class
new file mode 100644
index 0000000..84ed2a3
Binary files /dev/null and b/momtest/target/classes/com/alibaba/middleware/race/momtest/ProducerAsyncTest$1.class differ
diff --git a/momtest/target/classes/com/alibaba/middleware/race/momtest/ProducerAsyncTest.class b/momtest/target/classes/com/alibaba/middleware/race/momtest/ProducerAsyncTest.class
new file mode 100644
index 0000000..107ef9c
Binary files /dev/null and b/momtest/target/classes/com/alibaba/middleware/race/momtest/ProducerAsyncTest.class differ
diff --git a/momtest/target/classes/com/alibaba/middleware/race/momtest/ProducerTest.class b/momtest/target/classes/com/alibaba/middleware/race/momtest/ProducerTest.class
new file mode 100644
index 0000000..4528b8b
Binary files /dev/null and b/momtest/target/classes/com/alibaba/middleware/race/momtest/ProducerTest.class differ
diff --git a/momtest/target/classes/com/alibaba/middleware/race/momtest/PubSubTest$1.class b/momtest/target/classes/com/alibaba/middleware/race/momtest/PubSubTest$1.class
new file mode 100644
index 0000000..9d33c31
Binary files /dev/null and b/momtest/target/classes/com/alibaba/middleware/race/momtest/PubSubTest$1.class differ
diff --git a/momtest/target/classes/com/alibaba/middleware/race/momtest/PubSubTest$2.class b/momtest/target/classes/com/alibaba/middleware/race/momtest/PubSubTest$2.class
new file mode 100644
index 0000000..ac18974
Binary files /dev/null and b/momtest/target/classes/com/alibaba/middleware/race/momtest/PubSubTest$2.class differ
diff --git a/momtest/target/classes/com/alibaba/middleware/race/momtest/PubSubTest$3.class b/momtest/target/classes/com/alibaba/middleware/race/momtest/PubSubTest$3.class
new file mode 100644
index 0000000..da02cc7
Binary files /dev/null and b/momtest/target/classes/com/alibaba/middleware/race/momtest/PubSubTest$3.class differ
diff --git a/momtest/target/classes/com/alibaba/middleware/race/momtest/PubSubTest.class b/momtest/target/classes/com/alibaba/middleware/race/momtest/PubSubTest.class
new file mode 100644
index 0000000..4c4d27d
Binary files /dev/null and b/momtest/target/classes/com/alibaba/middleware/race/momtest/PubSubTest.class differ
diff --git a/momtest/target/classes/com/alibaba/middleware/race/momtest/TestResult.class b/momtest/target/classes/com/alibaba/middleware/race/momtest/TestResult.class
new file mode 100644
index 0000000..061a0cc
Binary files /dev/null and b/momtest/target/classes/com/alibaba/middleware/race/momtest/TestResult.class differ
diff --git a/momtest/target/classes/com/alibaba/middleware/race/momtest/UniqId$1.class b/momtest/target/classes/com/alibaba/middleware/race/momtest/UniqId$1.class
new file mode 100644
index 0000000..9cf8c52
Binary files /dev/null and b/momtest/target/classes/com/alibaba/middleware/race/momtest/UniqId$1.class differ
diff --git a/momtest/target/classes/com/alibaba/middleware/race/momtest/UniqId$UniqTimer.class b/momtest/target/classes/com/alibaba/middleware/race/momtest/UniqId$UniqTimer.class
new file mode 100644
index 0000000..c4ca823
Binary files /dev/null and b/momtest/target/classes/com/alibaba/middleware/race/momtest/UniqId$UniqTimer.class differ
diff --git a/momtest/target/classes/com/alibaba/middleware/race/momtest/UniqId.class b/momtest/target/classes/com/alibaba/middleware/race/momtest/UniqId.class
new file mode 100644
index 0000000..e2026ca
Binary files /dev/null and b/momtest/target/classes/com/alibaba/middleware/race/momtest/UniqId.class differ
diff --git a/src/main/main1.iml b/src/main/main1.iml
new file mode 100644
index 0000000..d94e561
--- /dev/null
+++ b/src/main/main1.iml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/test/test.iml b/src/test/test.iml
new file mode 100644
index 0000000..21bcd68
--- /dev/null
+++ b/src/test/test.iml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/Broker$1$1.class b/target/lib/classes/com/alibaba/middleware/race/mom/Broker$1$1.class
index 200f236..85bf6e2 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/Broker$1$1.class and b/target/lib/classes/com/alibaba/middleware/race/mom/Broker$1$1.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/Broker$1.class b/target/lib/classes/com/alibaba/middleware/race/mom/Broker$1.class
index 8805eeb..2ce8011 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/Broker$1.class and b/target/lib/classes/com/alibaba/middleware/race/mom/Broker$1.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/Broker.class b/target/lib/classes/com/alibaba/middleware/race/mom/Broker.class
index b0d2181..09f431d 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/Broker.class and b/target/lib/classes/com/alibaba/middleware/race/mom/Broker.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/ConsumeStatus.class b/target/lib/classes/com/alibaba/middleware/race/mom/ConsumeStatus.class
index d35395a..c6b6292 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/ConsumeStatus.class and b/target/lib/classes/com/alibaba/middleware/race/mom/ConsumeStatus.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/DefaultConsumer$1$1.class b/target/lib/classes/com/alibaba/middleware/race/mom/DefaultConsumer$1$1.class
index 3e93986..469e0cc 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/DefaultConsumer$1$1.class and b/target/lib/classes/com/alibaba/middleware/race/mom/DefaultConsumer$1$1.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/DefaultConsumer$1.class b/target/lib/classes/com/alibaba/middleware/race/mom/DefaultConsumer$1.class
index 500eda8..b775611 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/DefaultConsumer$1.class and b/target/lib/classes/com/alibaba/middleware/race/mom/DefaultConsumer$1.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/DefaultConsumer.class b/target/lib/classes/com/alibaba/middleware/race/mom/DefaultConsumer.class
index a261512..9842f67 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/DefaultConsumer.class and b/target/lib/classes/com/alibaba/middleware/race/mom/DefaultConsumer.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/DefaultProducer$1$1.class b/target/lib/classes/com/alibaba/middleware/race/mom/DefaultProducer$1$1.class
index fcdb89d..3f1e27c 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/DefaultProducer$1$1.class and b/target/lib/classes/com/alibaba/middleware/race/mom/DefaultProducer$1$1.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/DefaultProducer$1.class b/target/lib/classes/com/alibaba/middleware/race/mom/DefaultProducer$1.class
index 833c59a..f99b763 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/DefaultProducer$1.class and b/target/lib/classes/com/alibaba/middleware/race/mom/DefaultProducer$1.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/DefaultProducer$2.class b/target/lib/classes/com/alibaba/middleware/race/mom/DefaultProducer$2.class
index 7a7d7a1..f89f68e 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/DefaultProducer$2.class and b/target/lib/classes/com/alibaba/middleware/race/mom/DefaultProducer$2.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/DefaultProducer.class b/target/lib/classes/com/alibaba/middleware/race/mom/DefaultProducer.class
index 7e0be60..bb58185 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/DefaultProducer.class and b/target/lib/classes/com/alibaba/middleware/race/mom/DefaultProducer.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/SendStatus.class b/target/lib/classes/com/alibaba/middleware/race/mom/SendStatus.class
index 0235752..a35494e 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/SendStatus.class and b/target/lib/classes/com/alibaba/middleware/race/mom/SendStatus.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/AccumulateHandler$1.class b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/AccumulateHandler$1.class
index 6c2de6f..c15f379 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/AccumulateHandler$1.class and b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/AccumulateHandler$1.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/AccumulateHandler.class b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/AccumulateHandler.class
index a94dd9b..cb50f4f 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/AccumulateHandler.class and b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/AccumulateHandler.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/MessageManager.class b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/MessageManager.class
index 9e6d5f7..ac5d87a 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/MessageManager.class and b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/MessageManager.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/MessageStore$1.class b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/MessageStore$1.class
index c14988c..099d3ff 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/MessageStore$1.class and b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/MessageStore$1.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/MessageStore$2.class b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/MessageStore$2.class
index 0610a0e..bf4dc11 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/MessageStore$2.class and b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/MessageStore$2.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/MessageStore.class b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/MessageStore.class
index c649aa5..51fddbc 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/MessageStore.class and b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/MessageStore.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/Recover.class b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/Recover.class
index 4e41850..888c3ca 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/Recover.class and b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/Recover.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/SendInfoScanner$1$1.class b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/SendInfoScanner$1$1.class
index 34db144..17cd778 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/SendInfoScanner$1$1.class and b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/SendInfoScanner$1$1.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/SendInfoScanner$1.class b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/SendInfoScanner$1.class
index e6f81db..2e9dc49 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/SendInfoScanner$1.class and b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/SendInfoScanner$1.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/SendInfoScanner$2.class b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/SendInfoScanner$2.class
index f29e66b..6c8b77c 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/SendInfoScanner$2.class and b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/SendInfoScanner$2.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/SendInfoScanner.class b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/SendInfoScanner.class
index 591d95e..c9e0762 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/SendInfoScanner.class and b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/SendInfoScanner.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/StoreSucceedListener$1.class b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/StoreSucceedListener$1.class
index 46f2166..306ddf1 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/StoreSucceedListener$1.class and b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/StoreSucceedListener$1.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/StoreSucceedListener.class b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/StoreSucceedListener.class
index 82bf73e..eecd29b 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/StoreSucceedListener.class and b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/StoreSucceedListener.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/SubsStore$1.class b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/SubsStore$1.class
index d45396d..b07ef88 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/SubsStore$1.class and b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/SubsStore$1.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/SubsStore.class b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/SubsStore.class
index 0eca921..4490967 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/SubsStore.class and b/target/lib/classes/com/alibaba/middleware/race/mom/broker/function/SubsStore.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/broker/group/ConsumerGroup$1.class b/target/lib/classes/com/alibaba/middleware/race/mom/broker/group/ConsumerGroup$1.class
index 0e688c3..ba96a2c 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/broker/group/ConsumerGroup$1.class and b/target/lib/classes/com/alibaba/middleware/race/mom/broker/group/ConsumerGroup$1.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/broker/group/ConsumerGroup$2.class b/target/lib/classes/com/alibaba/middleware/race/mom/broker/group/ConsumerGroup$2.class
index 291889c..a802980 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/broker/group/ConsumerGroup$2.class and b/target/lib/classes/com/alibaba/middleware/race/mom/broker/group/ConsumerGroup$2.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/broker/group/ConsumerGroup$3.class b/target/lib/classes/com/alibaba/middleware/race/mom/broker/group/ConsumerGroup$3.class
index 63c39a4..27073c4 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/broker/group/ConsumerGroup$3.class and b/target/lib/classes/com/alibaba/middleware/race/mom/broker/group/ConsumerGroup$3.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/broker/group/ConsumerGroup.class b/target/lib/classes/com/alibaba/middleware/race/mom/broker/group/ConsumerGroup.class
index 216b847..46fcea3 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/broker/group/ConsumerGroup.class and b/target/lib/classes/com/alibaba/middleware/race/mom/broker/group/ConsumerGroup.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/broker/group/ProducerGroup.class b/target/lib/classes/com/alibaba/middleware/race/mom/broker/group/ProducerGroup.class
index 8571e31..9c3feec 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/broker/group/ProducerGroup.class and b/target/lib/classes/com/alibaba/middleware/race/mom/broker/group/ProducerGroup.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/serializer/JdkObjectSerializer.class b/target/lib/classes/com/alibaba/middleware/race/mom/serializer/JdkObjectSerializer.class
index 1804687..4753ad7 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/serializer/JdkObjectSerializer.class and b/target/lib/classes/com/alibaba/middleware/race/mom/serializer/JdkObjectSerializer.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/serializer/KryoxSerializer.class b/target/lib/classes/com/alibaba/middleware/race/mom/serializer/KryoxSerializer.class
index d671081..2e405bc 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/serializer/KryoxSerializer.class and b/target/lib/classes/com/alibaba/middleware/race/mom/serializer/KryoxSerializer.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/serializer/RpcEncoder.class b/target/lib/classes/com/alibaba/middleware/race/mom/serializer/RpcEncoder.class
index 4c24744..cb913f9 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/serializer/RpcEncoder.class and b/target/lib/classes/com/alibaba/middleware/race/mom/serializer/RpcEncoder.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/store/ArrayStoreImp.class b/target/lib/classes/com/alibaba/middleware/race/mom/store/ArrayStoreImp.class
index 088a0c5..4989326 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/store/ArrayStoreImp.class and b/target/lib/classes/com/alibaba/middleware/race/mom/store/ArrayStoreImp.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/store/Comm.class b/target/lib/classes/com/alibaba/middleware/race/mom/store/Comm.class
index 81911c3..95decdf 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/store/Comm.class and b/target/lib/classes/com/alibaba/middleware/race/mom/store/Comm.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/store/DataMappedFile.class b/target/lib/classes/com/alibaba/middleware/race/mom/store/DataMappedFile.class
index 112f55f..af1fbac 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/store/DataMappedFile.class and b/target/lib/classes/com/alibaba/middleware/race/mom/store/DataMappedFile.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/store/FileStoreManager$1.class b/target/lib/classes/com/alibaba/middleware/race/mom/store/FileStoreManager$1.class
index 894b285..7209ec2 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/store/FileStoreManager$1.class and b/target/lib/classes/com/alibaba/middleware/race/mom/store/FileStoreManager$1.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/store/FileStoreManager$2.class b/target/lib/classes/com/alibaba/middleware/race/mom/store/FileStoreManager$2.class
index 6b5cc49..a746aaf 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/store/FileStoreManager$2.class and b/target/lib/classes/com/alibaba/middleware/race/mom/store/FileStoreManager$2.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/store/FileStoreManager.class b/target/lib/classes/com/alibaba/middleware/race/mom/store/FileStoreManager.class
index 56f2ef8..27a90a9 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/store/FileStoreManager.class and b/target/lib/classes/com/alibaba/middleware/race/mom/store/FileStoreManager.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/store/IndexMappedFile.class b/target/lib/classes/com/alibaba/middleware/race/mom/store/IndexMappedFile.class
index 2f976bc..1297a47 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/store/IndexMappedFile.class and b/target/lib/classes/com/alibaba/middleware/race/mom/store/IndexMappedFile.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/store/MappedFileInfo.class b/target/lib/classes/com/alibaba/middleware/race/mom/store/MappedFileInfo.class
index 8ae9e40..1bf4c7f 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/store/MappedFileInfo.class and b/target/lib/classes/com/alibaba/middleware/race/mom/store/MappedFileInfo.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/store/MsgFileUtil.class b/target/lib/classes/com/alibaba/middleware/race/mom/store/MsgFileUtil.class
index faa22b9..440bca7 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/store/MsgFileUtil.class and b/target/lib/classes/com/alibaba/middleware/race/mom/store/MsgFileUtil.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/store/MsgStoreImp_MappedBuffer2.class b/target/lib/classes/com/alibaba/middleware/race/mom/store/MsgStoreImp_MappedBuffer2.class
index 34cc897..437d2f2 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/store/MsgStoreImp_MappedBuffer2.class and b/target/lib/classes/com/alibaba/middleware/race/mom/store/MsgStoreImp_MappedBuffer2.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/store/Redo$RedoBean.class b/target/lib/classes/com/alibaba/middleware/race/mom/store/Redo$RedoBean.class
index 3639e59..97023fe 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/store/Redo$RedoBean.class and b/target/lib/classes/com/alibaba/middleware/race/mom/store/Redo$RedoBean.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/store/Redo.class b/target/lib/classes/com/alibaba/middleware/race/mom/store/Redo.class
index 53647f9..d178c26 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/store/Redo.class and b/target/lib/classes/com/alibaba/middleware/race/mom/store/Redo.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/store/RedoLog$LogBean.class b/target/lib/classes/com/alibaba/middleware/race/mom/store/RedoLog$LogBean.class
index 5a9b788..4cab338 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/store/RedoLog$LogBean.class and b/target/lib/classes/com/alibaba/middleware/race/mom/store/RedoLog$LogBean.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/store/RedoLog.class b/target/lib/classes/com/alibaba/middleware/race/mom/store/RedoLog.class
index b205fa0..7c01ec4 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/store/RedoLog.class and b/target/lib/classes/com/alibaba/middleware/race/mom/store/RedoLog.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/store/SubscribeStoreImp.class b/target/lib/classes/com/alibaba/middleware/race/mom/store/SubscribeStoreImp.class
index 8b23ce7..84859fd 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/store/SubscribeStoreImp.class and b/target/lib/classes/com/alibaba/middleware/race/mom/store/SubscribeStoreImp.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/store/SubscribeStoreImp_MappedBuffer2.class b/target/lib/classes/com/alibaba/middleware/race/mom/store/SubscribeStoreImp_MappedBuffer2.class
index 03f95d0..38889a0 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/store/SubscribeStoreImp_MappedBuffer2.class and b/target/lib/classes/com/alibaba/middleware/race/mom/store/SubscribeStoreImp_MappedBuffer2.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/store/redotest.class b/target/lib/classes/com/alibaba/middleware/race/mom/store/redotest.class
index 9848cbc..9255a67 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/store/redotest.class and b/target/lib/classes/com/alibaba/middleware/race/mom/store/redotest.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/util/Info.class b/target/lib/classes/com/alibaba/middleware/race/mom/util/Info.class
index d91b7f8..55dc185 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/util/Info.class and b/target/lib/classes/com/alibaba/middleware/race/mom/util/Info.class differ
diff --git a/target/lib/classes/com/alibaba/middleware/race/mom/util/InfoType.class b/target/lib/classes/com/alibaba/middleware/race/mom/util/InfoType.class
index 71d4de4..5542465 100644
Binary files a/target/lib/classes/com/alibaba/middleware/race/mom/util/InfoType.class and b/target/lib/classes/com/alibaba/middleware/race/mom/util/InfoType.class differ
diff --git a/target/lib/test-classes/com/alibaba/middleware/race/mom/AppTest$1.class b/target/lib/test-classes/com/alibaba/middleware/race/mom/AppTest$1.class
index ab6b89a..99f6c2d 100644
Binary files a/target/lib/test-classes/com/alibaba/middleware/race/mom/AppTest$1.class and b/target/lib/test-classes/com/alibaba/middleware/race/mom/AppTest$1.class differ
diff --git a/target/lib/test-classes/com/alibaba/middleware/race/mom/AppTest.class b/target/lib/test-classes/com/alibaba/middleware/race/mom/AppTest.class
index bd00c1b..78bed14 100644
Binary files a/target/lib/test-classes/com/alibaba/middleware/race/mom/AppTest.class and b/target/lib/test-classes/com/alibaba/middleware/race/mom/AppTest.class differ
diff --git a/target/lib/test-classes/com/alibaba/middleware/race/mom/test$1.class b/target/lib/test-classes/com/alibaba/middleware/race/mom/test$1.class
index 847424f..140f029 100644
Binary files a/target/lib/test-classes/com/alibaba/middleware/race/mom/test$1.class and b/target/lib/test-classes/com/alibaba/middleware/race/mom/test$1.class differ
diff --git a/target/lib/test-classes/com/alibaba/middleware/race/mom/test.class b/target/lib/test-classes/com/alibaba/middleware/race/mom/test.class
index c3d30a1..7f60d9c 100644
Binary files a/target/lib/test-classes/com/alibaba/middleware/race/mom/test.class and b/target/lib/test-classes/com/alibaba/middleware/race/mom/test.class differ