istox 0.1.121 → 0.1.122
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.idea/istox-gem.iml +105 -107
- data/.idea/workspace.xml +33 -1
- data/Gemfile.lock +17 -17
- data/lib/istox/helpers/bunny_boot.rb +36 -1
- data/lib/istox/helpers/publisher.rb +38 -16
- data/lib/istox/helpers/redis.rb +16 -4
- data/lib/istox/helpers/subscriber.rb +93 -53
- data/lib/istox/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b2ec2c5ce319ec743b9a544670ee7a9b88d9bcec272e6804225164bffd5fa169
|
|
4
|
+
data.tar.gz: 9448bcab2ec166a6dbc20106634389e7823f9e68ae4b9e2b16fe3ce66adfc34d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3b795bc2d296992bbcff25d7450b5988c3b366c1697062e3f9dfd2e47e4366e599ceeb943573d729165424ec15861e01a8afc027b526e70e3b86150391607319
|
|
7
|
+
data.tar.gz: 80c81fab54f0516cf93af8afb9469ab61fc247e7813c90fd003f864c3bece24039c0b925d61d5fcee21940bf6158de54509e75229adb86970461740e289db996
|
data/.idea/istox-gem.iml
CHANGED
|
@@ -250,26 +250,26 @@
|
|
|
250
250
|
</library>
|
|
251
251
|
</orderEntry>
|
|
252
252
|
<orderEntry type="module-library">
|
|
253
|
-
<library name="builder (vbundled(3.2.
|
|
253
|
+
<library name="builder (vbundled(3.2.4)) [path][gem]" type="rubylib">
|
|
254
254
|
<properties>
|
|
255
255
|
<option name="version" value="4" />
|
|
256
256
|
</properties>
|
|
257
257
|
<CLASSES>
|
|
258
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/builder-3.2.
|
|
259
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/builder-3.2.
|
|
260
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/builder-3.2.
|
|
261
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/builder-3.2.
|
|
258
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/builder-3.2.4/doc" />
|
|
259
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/builder-3.2.4/lib" />
|
|
260
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/builder-3.2.4/test" />
|
|
261
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/builder-3.2.4/rakelib" />
|
|
262
262
|
</CLASSES>
|
|
263
263
|
<SOURCES>
|
|
264
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/builder-3.2.
|
|
265
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/builder-3.2.
|
|
266
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/builder-3.2.
|
|
267
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/builder-3.2.
|
|
264
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/builder-3.2.4/doc" />
|
|
265
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/builder-3.2.4/lib" />
|
|
266
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/builder-3.2.4/test" />
|
|
267
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/builder-3.2.4/rakelib" />
|
|
268
268
|
</SOURCES>
|
|
269
269
|
<excluded>
|
|
270
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/builder-3.2.
|
|
271
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/builder-3.2.
|
|
272
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/builder-3.2.
|
|
270
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/builder-3.2.4/doc" />
|
|
271
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/builder-3.2.4/test" />
|
|
272
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/builder-3.2.4/rakelib" />
|
|
273
273
|
</excluded>
|
|
274
274
|
</library>
|
|
275
275
|
</orderEntry>
|
|
@@ -334,39 +334,34 @@
|
|
|
334
334
|
</library>
|
|
335
335
|
</orderEntry>
|
|
336
336
|
<orderEntry type="module-library">
|
|
337
|
-
<library name="concurrent-ruby (vbundled(1.1.
|
|
337
|
+
<library name="concurrent-ruby (vbundled(1.1.5)) [path][gem]" type="rubylib">
|
|
338
338
|
<properties>
|
|
339
339
|
<option name="version" value="4" />
|
|
340
340
|
</properties>
|
|
341
341
|
<CLASSES>
|
|
342
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/concurrent-ruby-1.1.
|
|
343
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/concurrent-ruby-1.1.
|
|
342
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/concurrent-ruby-1.1.5/ext" />
|
|
343
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/concurrent-ruby-1.1.5/lib" />
|
|
344
344
|
</CLASSES>
|
|
345
345
|
<SOURCES>
|
|
346
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/concurrent-ruby-1.1.
|
|
347
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/concurrent-ruby-1.1.
|
|
346
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/concurrent-ruby-1.1.5/ext" />
|
|
347
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/concurrent-ruby-1.1.5/lib" />
|
|
348
348
|
</SOURCES>
|
|
349
349
|
<excluded>
|
|
350
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/concurrent-ruby-1.1.
|
|
350
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/concurrent-ruby-1.1.5/ext" />
|
|
351
351
|
</excluded>
|
|
352
352
|
</library>
|
|
353
353
|
</orderEntry>
|
|
354
354
|
<orderEntry type="module-library">
|
|
355
|
-
<library name="crass (vbundled(1.0.
|
|
355
|
+
<library name="crass (vbundled(1.0.6)) [path][gem]" type="rubylib">
|
|
356
356
|
<properties>
|
|
357
357
|
<option name="version" value="4" />
|
|
358
358
|
</properties>
|
|
359
359
|
<CLASSES>
|
|
360
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/crass-1.0.
|
|
361
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/crass-1.0.4/test" />
|
|
360
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/crass-1.0.6/lib" />
|
|
362
361
|
</CLASSES>
|
|
363
362
|
<SOURCES>
|
|
364
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/crass-1.0.
|
|
365
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/crass-1.0.4/test" />
|
|
363
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/crass-1.0.6/lib" />
|
|
366
364
|
</SOURCES>
|
|
367
|
-
<excluded>
|
|
368
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/crass-1.0.4/test" />
|
|
369
|
-
</excluded>
|
|
370
365
|
</library>
|
|
371
366
|
</orderEntry>
|
|
372
367
|
<orderEntry type="module-library">
|
|
@@ -441,20 +436,20 @@
|
|
|
441
436
|
</library>
|
|
442
437
|
</orderEntry>
|
|
443
438
|
<orderEntry type="module-library">
|
|
444
|
-
<library name="erubi (vbundled(1.
|
|
439
|
+
<library name="erubi (vbundled(1.9.0)) [path][gem]" type="rubylib">
|
|
445
440
|
<properties>
|
|
446
441
|
<option name="version" value="4" />
|
|
447
442
|
</properties>
|
|
448
443
|
<CLASSES>
|
|
449
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/erubi-1.
|
|
450
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/erubi-1.
|
|
444
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/erubi-1.9.0/lib" />
|
|
445
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/erubi-1.9.0/test" />
|
|
451
446
|
</CLASSES>
|
|
452
447
|
<SOURCES>
|
|
453
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/erubi-1.
|
|
454
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/erubi-1.
|
|
448
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/erubi-1.9.0/lib" />
|
|
449
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/erubi-1.9.0/test" />
|
|
455
450
|
</SOURCES>
|
|
456
451
|
<excluded>
|
|
457
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/erubi-1.
|
|
452
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/erubi-1.9.0/test" />
|
|
458
453
|
</excluded>
|
|
459
454
|
</library>
|
|
460
455
|
</orderEntry>
|
|
@@ -811,23 +806,23 @@
|
|
|
811
806
|
</library>
|
|
812
807
|
</orderEntry>
|
|
813
808
|
<orderEntry type="module-library">
|
|
814
|
-
<library name="loofah (vbundled(2.
|
|
809
|
+
<library name="loofah (vbundled(2.4.0)) [path][gem]" type="rubylib">
|
|
815
810
|
<properties>
|
|
816
811
|
<option name="version" value="4" />
|
|
817
812
|
</properties>
|
|
818
813
|
<CLASSES>
|
|
819
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/loofah-2.
|
|
820
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/loofah-2.
|
|
821
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/loofah-2.
|
|
814
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/loofah-2.4.0/lib" />
|
|
815
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/loofah-2.4.0/test" />
|
|
816
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/loofah-2.4.0/benchmark" />
|
|
822
817
|
</CLASSES>
|
|
823
818
|
<SOURCES>
|
|
824
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/loofah-2.
|
|
825
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/loofah-2.
|
|
826
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/loofah-2.
|
|
819
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/loofah-2.4.0/lib" />
|
|
820
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/loofah-2.4.0/test" />
|
|
821
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/loofah-2.4.0/benchmark" />
|
|
827
822
|
</SOURCES>
|
|
828
823
|
<excluded>
|
|
829
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/loofah-2.
|
|
830
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/loofah-2.
|
|
824
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/loofah-2.4.0/test" />
|
|
825
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/loofah-2.4.0/benchmark" />
|
|
831
826
|
</excluded>
|
|
832
827
|
</library>
|
|
833
828
|
</orderEntry>
|
|
@@ -939,20 +934,20 @@
|
|
|
939
934
|
</library>
|
|
940
935
|
</orderEntry>
|
|
941
936
|
<orderEntry type="module-library">
|
|
942
|
-
<library name="minitest (vbundled(5.
|
|
937
|
+
<library name="minitest (vbundled(5.14.0)) [path][gem]" type="rubylib">
|
|
943
938
|
<properties>
|
|
944
939
|
<option name="version" value="4" />
|
|
945
940
|
</properties>
|
|
946
941
|
<CLASSES>
|
|
947
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/minitest-5.
|
|
948
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/minitest-5.
|
|
942
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/minitest-5.14.0/lib" />
|
|
943
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/minitest-5.14.0/test" />
|
|
949
944
|
</CLASSES>
|
|
950
945
|
<SOURCES>
|
|
951
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/minitest-5.
|
|
952
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/minitest-5.
|
|
946
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/minitest-5.14.0/lib" />
|
|
947
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/minitest-5.14.0/test" />
|
|
953
948
|
</SOURCES>
|
|
954
949
|
<excluded>
|
|
955
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/minitest-5.
|
|
950
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/minitest-5.14.0/test" />
|
|
956
951
|
</excluded>
|
|
957
952
|
</library>
|
|
958
953
|
</orderEntry>
|
|
@@ -1002,26 +997,26 @@
|
|
|
1002
997
|
</library>
|
|
1003
998
|
</orderEntry>
|
|
1004
999
|
<orderEntry type="module-library">
|
|
1005
|
-
<library name="nokogiri (vbundled(1.10.
|
|
1000
|
+
<library name="nokogiri (vbundled(1.10.7)) [path][gem]" type="rubylib">
|
|
1006
1001
|
<properties>
|
|
1007
1002
|
<option name="version" value="4" />
|
|
1008
1003
|
</properties>
|
|
1009
1004
|
<CLASSES>
|
|
1010
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/nokogiri-1.10.
|
|
1011
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/nokogiri-1.10.
|
|
1012
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/nokogiri-1.10.
|
|
1013
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/nokogiri-1.10.
|
|
1005
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/nokogiri-1.10.7/bin" />
|
|
1006
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/nokogiri-1.10.7/ext" />
|
|
1007
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/nokogiri-1.10.7/lib" />
|
|
1008
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/nokogiri-1.10.7/patches" />
|
|
1014
1009
|
</CLASSES>
|
|
1015
1010
|
<SOURCES>
|
|
1016
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/nokogiri-1.10.
|
|
1017
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/nokogiri-1.10.
|
|
1018
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/nokogiri-1.10.
|
|
1019
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/nokogiri-1.10.
|
|
1011
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/nokogiri-1.10.7/bin" />
|
|
1012
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/nokogiri-1.10.7/ext" />
|
|
1013
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/nokogiri-1.10.7/lib" />
|
|
1014
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/nokogiri-1.10.7/patches" />
|
|
1020
1015
|
</SOURCES>
|
|
1021
1016
|
<excluded>
|
|
1022
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/nokogiri-1.10.
|
|
1023
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/nokogiri-1.10.
|
|
1024
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/nokogiri-1.10.
|
|
1017
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/nokogiri-1.10.7/bin" />
|
|
1018
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/nokogiri-1.10.7/ext" />
|
|
1019
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/nokogiri-1.10.7/patches" />
|
|
1025
1020
|
</excluded>
|
|
1026
1021
|
</library>
|
|
1027
1022
|
</orderEntry>
|
|
@@ -1086,29 +1081,26 @@
|
|
|
1086
1081
|
</library>
|
|
1087
1082
|
</orderEntry>
|
|
1088
1083
|
<orderEntry type="module-library">
|
|
1089
|
-
<library name="rack (vbundled(2.
|
|
1084
|
+
<library name="rack (vbundled(2.1.2)) [path][gem]" type="rubylib">
|
|
1090
1085
|
<properties>
|
|
1091
1086
|
<option name="version" value="4" />
|
|
1092
1087
|
</properties>
|
|
1093
1088
|
<CLASSES>
|
|
1094
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rack-2.
|
|
1095
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rack-2.
|
|
1096
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rack-2.
|
|
1097
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rack-2.
|
|
1098
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rack-2.0.6/example" />
|
|
1089
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rack-2.1.2/bin" />
|
|
1090
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rack-2.1.2/lib" />
|
|
1091
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rack-2.1.2/contrib" />
|
|
1092
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rack-2.1.2/example" />
|
|
1099
1093
|
</CLASSES>
|
|
1100
1094
|
<SOURCES>
|
|
1101
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rack-2.
|
|
1102
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rack-2.
|
|
1103
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rack-2.
|
|
1104
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rack-2.
|
|
1105
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rack-2.0.6/example" />
|
|
1095
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rack-2.1.2/bin" />
|
|
1096
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rack-2.1.2/lib" />
|
|
1097
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rack-2.1.2/contrib" />
|
|
1098
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rack-2.1.2/example" />
|
|
1106
1099
|
</SOURCES>
|
|
1107
1100
|
<excluded>
|
|
1108
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rack-2.
|
|
1109
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rack-2.
|
|
1110
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rack-2.
|
|
1111
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rack-2.0.6/example" />
|
|
1101
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rack-2.1.2/bin" />
|
|
1102
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rack-2.1.2/contrib" />
|
|
1103
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rack-2.1.2/example" />
|
|
1112
1104
|
</excluded>
|
|
1113
1105
|
</library>
|
|
1114
1106
|
</orderEntry>
|
|
@@ -1153,20 +1145,20 @@
|
|
|
1153
1145
|
</library>
|
|
1154
1146
|
</orderEntry>
|
|
1155
1147
|
<orderEntry type="module-library">
|
|
1156
|
-
<library name="rails-html-sanitizer (vbundled(1.0
|
|
1148
|
+
<library name="rails-html-sanitizer (vbundled(1.3.0)) [path][gem]" type="rubylib">
|
|
1157
1149
|
<properties>
|
|
1158
1150
|
<option name="version" value="4" />
|
|
1159
1151
|
</properties>
|
|
1160
1152
|
<CLASSES>
|
|
1161
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rails-html-sanitizer-1.0
|
|
1162
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rails-html-sanitizer-1.0
|
|
1153
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rails-html-sanitizer-1.3.0/lib" />
|
|
1154
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rails-html-sanitizer-1.3.0/test" />
|
|
1163
1155
|
</CLASSES>
|
|
1164
1156
|
<SOURCES>
|
|
1165
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rails-html-sanitizer-1.0
|
|
1166
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rails-html-sanitizer-1.0
|
|
1157
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rails-html-sanitizer-1.3.0/lib" />
|
|
1158
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rails-html-sanitizer-1.3.0/test" />
|
|
1167
1159
|
</SOURCES>
|
|
1168
1160
|
<excluded>
|
|
1169
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rails-html-sanitizer-1.0
|
|
1161
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/rails-html-sanitizer-1.3.0/test" />
|
|
1170
1162
|
</excluded>
|
|
1171
1163
|
</library>
|
|
1172
1164
|
</orderEntry>
|
|
@@ -1268,20 +1260,29 @@
|
|
|
1268
1260
|
</library>
|
|
1269
1261
|
</orderEntry>
|
|
1270
1262
|
<orderEntry type="module-library">
|
|
1271
|
-
<library name="redis-actionpack (vbundled(5.
|
|
1263
|
+
<library name="redis-actionpack (vbundled(5.2.0)) [path][gem]" type="rubylib">
|
|
1272
1264
|
<properties>
|
|
1273
1265
|
<option name="version" value="4" />
|
|
1274
1266
|
</properties>
|
|
1275
1267
|
<CLASSES>
|
|
1276
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-actionpack-5.
|
|
1277
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-actionpack-5.
|
|
1268
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-actionpack-5.2.0/bin" />
|
|
1269
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-actionpack-5.2.0/lib" />
|
|
1270
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-actionpack-5.2.0/test" />
|
|
1271
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-actionpack-5.2.0/.github" />
|
|
1272
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-actionpack-5.2.0/gemfiles" />
|
|
1278
1273
|
</CLASSES>
|
|
1279
1274
|
<SOURCES>
|
|
1280
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-actionpack-5.
|
|
1281
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-actionpack-5.
|
|
1275
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-actionpack-5.2.0/bin" />
|
|
1276
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-actionpack-5.2.0/lib" />
|
|
1277
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-actionpack-5.2.0/test" />
|
|
1278
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-actionpack-5.2.0/.github" />
|
|
1279
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-actionpack-5.2.0/gemfiles" />
|
|
1282
1280
|
</SOURCES>
|
|
1283
1281
|
<excluded>
|
|
1284
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-actionpack-5.
|
|
1282
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-actionpack-5.2.0/bin" />
|
|
1283
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-actionpack-5.2.0/test" />
|
|
1284
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-actionpack-5.2.0/.github" />
|
|
1285
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-actionpack-5.2.0/gemfiles" />
|
|
1285
1286
|
</excluded>
|
|
1286
1287
|
</library>
|
|
1287
1288
|
</orderEntry>
|
|
@@ -1325,29 +1326,26 @@
|
|
|
1325
1326
|
</library>
|
|
1326
1327
|
</orderEntry>
|
|
1327
1328
|
<orderEntry type="module-library">
|
|
1328
|
-
<library name="redis-rack (vbundled(2.0
|
|
1329
|
+
<library name="redis-rack (vbundled(2.1.0)) [path][gem]" type="rubylib">
|
|
1329
1330
|
<properties>
|
|
1330
1331
|
<option name="version" value="4" />
|
|
1331
1332
|
</properties>
|
|
1332
1333
|
<CLASSES>
|
|
1333
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-rack-2.0
|
|
1334
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-rack-2.0
|
|
1335
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-rack-2.0
|
|
1336
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-rack-2.0
|
|
1337
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-rack-2.0.6/gemfiles" />
|
|
1334
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-rack-2.1.0/bin" />
|
|
1335
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-rack-2.1.0/lib" />
|
|
1336
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-rack-2.1.0/test" />
|
|
1337
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-rack-2.1.0/.github" />
|
|
1338
1338
|
</CLASSES>
|
|
1339
1339
|
<SOURCES>
|
|
1340
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-rack-2.0
|
|
1341
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-rack-2.0
|
|
1342
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-rack-2.0
|
|
1343
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-rack-2.0
|
|
1344
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-rack-2.0.6/gemfiles" />
|
|
1340
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-rack-2.1.0/bin" />
|
|
1341
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-rack-2.1.0/lib" />
|
|
1342
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-rack-2.1.0/test" />
|
|
1343
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-rack-2.1.0/.github" />
|
|
1345
1344
|
</SOURCES>
|
|
1346
1345
|
<excluded>
|
|
1347
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-rack-2.0
|
|
1348
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-rack-2.0
|
|
1349
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-rack-2.0
|
|
1350
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-rack-2.0.6/gemfiles" />
|
|
1346
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-rack-2.1.0/bin" />
|
|
1347
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-rack-2.1.0/test" />
|
|
1348
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/redis-rack-2.1.0/.github" />
|
|
1351
1349
|
</excluded>
|
|
1352
1350
|
</library>
|
|
1353
1351
|
</orderEntry>
|
|
@@ -1619,20 +1617,20 @@
|
|
|
1619
1617
|
</library>
|
|
1620
1618
|
</orderEntry>
|
|
1621
1619
|
<orderEntry type="module-library">
|
|
1622
|
-
<library name="tzinfo (vbundled(1.2.
|
|
1620
|
+
<library name="tzinfo (vbundled(1.2.6)) [path][gem]" type="rubylib">
|
|
1623
1621
|
<properties>
|
|
1624
1622
|
<option name="version" value="4" />
|
|
1625
1623
|
</properties>
|
|
1626
1624
|
<CLASSES>
|
|
1627
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/tzinfo-1.2.
|
|
1628
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/tzinfo-1.2.
|
|
1625
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/tzinfo-1.2.6/lib" />
|
|
1626
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/tzinfo-1.2.6/test" />
|
|
1629
1627
|
</CLASSES>
|
|
1630
1628
|
<SOURCES>
|
|
1631
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/tzinfo-1.2.
|
|
1632
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/tzinfo-1.2.
|
|
1629
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/tzinfo-1.2.6/lib" />
|
|
1630
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/tzinfo-1.2.6/test" />
|
|
1633
1631
|
</SOURCES>
|
|
1634
1632
|
<excluded>
|
|
1635
|
-
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/tzinfo-1.2.
|
|
1633
|
+
<root url="file://$MODULE_DIR$/vendor/ruby/2.5.0/gems/tzinfo-1.2.6/test" />
|
|
1636
1634
|
</excluded>
|
|
1637
1635
|
</library>
|
|
1638
1636
|
</orderEntry>
|
data/.idea/workspace.xml
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
<list default="true" id="f70e0449-76c0-44d8-bcb9-7991f2a7e0f8" name="Default Changelist" comment="">
|
|
5
5
|
<change beforePath="$PROJECT_DIR$/.idea/istox-gem.iml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/istox-gem.iml" afterDir="false" />
|
|
6
6
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
|
7
|
+
<change beforePath="$PROJECT_DIR$/Gemfile.lock" beforeDir="false" afterPath="$PROJECT_DIR$/Gemfile.lock" afterDir="false" />
|
|
7
8
|
<change beforePath="$PROJECT_DIR$/lib/istox/version.rb" beforeDir="false" afterPath="$PROJECT_DIR$/lib/istox/version.rb" afterDir="false" />
|
|
8
9
|
</list>
|
|
9
10
|
<option name="SHOW_DIALOG" value="false" />
|
|
@@ -69,6 +70,18 @@
|
|
|
69
70
|
</list>
|
|
70
71
|
</recent_temporary>
|
|
71
72
|
</component>
|
|
73
|
+
<component name="ServiceViewManager">
|
|
74
|
+
<option name="viewStates">
|
|
75
|
+
<list>
|
|
76
|
+
<serviceView>
|
|
77
|
+
<treeState>
|
|
78
|
+
<expand />
|
|
79
|
+
<select />
|
|
80
|
+
</treeState>
|
|
81
|
+
</serviceView>
|
|
82
|
+
</list>
|
|
83
|
+
</option>
|
|
84
|
+
</component>
|
|
72
85
|
<component name="SpringUtil" SPRING_PRE_LOADER_OPTION="true" RAKE_SPRING_PRE_LOADER_OPTION="false" RAILS_SPRING_PRE_LOADER_OPTION="false" />
|
|
73
86
|
<component name="SvnConfiguration">
|
|
74
87
|
<configuration />
|
|
@@ -90,7 +103,26 @@
|
|
|
90
103
|
<workItem from="1580188100223" duration="29285000" />
|
|
91
104
|
<workItem from="1580636078385" duration="150000" />
|
|
92
105
|
<workItem from="1580636268918" duration="15217000" />
|
|
93
|
-
<workItem from="1580778333268" duration="
|
|
106
|
+
<workItem from="1580778333268" duration="38342000" />
|
|
107
|
+
<workItem from="1581417729768" duration="622000" />
|
|
108
|
+
<workItem from="1581997247028" duration="13298000" />
|
|
109
|
+
<workItem from="1582531415155" duration="2948000" />
|
|
110
|
+
<workItem from="1582721620073" duration="1020000" />
|
|
111
|
+
<workItem from="1582724056395" duration="121000" />
|
|
112
|
+
<workItem from="1582725579882" duration="410000" />
|
|
113
|
+
<workItem from="1582726229359" duration="130000" />
|
|
114
|
+
<workItem from="1582726580750" duration="184000" />
|
|
115
|
+
<workItem from="1582727163150" duration="3027000" />
|
|
116
|
+
<workItem from="1582731738723" duration="123000" />
|
|
117
|
+
<workItem from="1582733310576" duration="1118000" />
|
|
118
|
+
<workItem from="1582763652048" duration="4024000" />
|
|
119
|
+
<workItem from="1582769446142" duration="100000" />
|
|
120
|
+
<workItem from="1582769955751" duration="343000" />
|
|
121
|
+
<workItem from="1582772331852" duration="114000" />
|
|
122
|
+
<workItem from="1582772517220" duration="167000" />
|
|
123
|
+
<workItem from="1582773229066" duration="1054000" />
|
|
124
|
+
<workItem from="1582775256351" duration="904000" />
|
|
125
|
+
<workItem from="1582776881393" duration="310000" />
|
|
94
126
|
</task>
|
|
95
127
|
<servers />
|
|
96
128
|
</component>
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
istox (0.1.
|
|
4
|
+
istox (0.1.122)
|
|
5
5
|
awesome_print
|
|
6
6
|
binding_of_caller
|
|
7
7
|
bunny (>= 2.12.0)
|
|
@@ -69,18 +69,18 @@ GEM
|
|
|
69
69
|
aws-eventstream (~> 1.0, >= 1.0.2)
|
|
70
70
|
binding_of_caller (0.8.0)
|
|
71
71
|
debug_inspector (>= 0.0.1)
|
|
72
|
-
builder (3.2.
|
|
72
|
+
builder (3.2.4)
|
|
73
73
|
bullet (5.7.6)
|
|
74
74
|
activesupport (>= 3.0.0)
|
|
75
75
|
uniform_notifier (~> 1.11.0)
|
|
76
76
|
bunny (2.14.3)
|
|
77
77
|
amq-protocol (~> 2.3, >= 2.3.0)
|
|
78
|
-
concurrent-ruby (1.1.
|
|
79
|
-
crass (1.0.
|
|
78
|
+
concurrent-ruby (1.1.5)
|
|
79
|
+
crass (1.0.6)
|
|
80
80
|
database_cleaner (1.6.2)
|
|
81
81
|
debug_inspector (0.0.3)
|
|
82
82
|
diff-lcs (1.3)
|
|
83
|
-
erubi (1.
|
|
83
|
+
erubi (1.9.0)
|
|
84
84
|
factory_bot (4.8.2)
|
|
85
85
|
activesupport (>= 3.0.0)
|
|
86
86
|
factory_bot_rails (4.8.2)
|
|
@@ -130,7 +130,7 @@ GEM
|
|
|
130
130
|
listen (3.0.8)
|
|
131
131
|
rb-fsevent (~> 0.9, >= 0.9.4)
|
|
132
132
|
rb-inotify (~> 0.9, >= 0.9.7)
|
|
133
|
-
loofah (2.
|
|
133
|
+
loofah (2.4.0)
|
|
134
134
|
crass (~> 1.0.2)
|
|
135
135
|
nokogiri (>= 1.5.9)
|
|
136
136
|
mail (2.7.1)
|
|
@@ -141,17 +141,17 @@ GEM
|
|
|
141
141
|
mimemagic (0.3.3)
|
|
142
142
|
mini_mime (1.0.1)
|
|
143
143
|
mini_portile2 (2.4.0)
|
|
144
|
-
minitest (5.
|
|
144
|
+
minitest (5.14.0)
|
|
145
145
|
multipart-post (2.1.1)
|
|
146
146
|
nio4r (2.3.1)
|
|
147
|
-
nokogiri (1.10.
|
|
147
|
+
nokogiri (1.10.7)
|
|
148
148
|
mini_portile2 (~> 2.4.0)
|
|
149
149
|
oj (3.10.2)
|
|
150
150
|
ougai (1.8.2)
|
|
151
151
|
oj (~> 3.4)
|
|
152
152
|
paranoia (2.4.2)
|
|
153
153
|
activerecord (>= 4.0, < 6.1)
|
|
154
|
-
rack (2.
|
|
154
|
+
rack (2.1.2)
|
|
155
155
|
rack-test (1.1.0)
|
|
156
156
|
rack (>= 1.0, < 3)
|
|
157
157
|
rails (5.2.2)
|
|
@@ -170,8 +170,8 @@ GEM
|
|
|
170
170
|
rails-dom-testing (2.0.3)
|
|
171
171
|
activesupport (>= 4.2.0)
|
|
172
172
|
nokogiri (>= 1.6)
|
|
173
|
-
rails-html-sanitizer (1.0
|
|
174
|
-
loofah (~> 2.
|
|
173
|
+
rails-html-sanitizer (1.3.0)
|
|
174
|
+
loofah (~> 2.3)
|
|
175
175
|
railties (5.2.2)
|
|
176
176
|
actionpack (= 5.2.2)
|
|
177
177
|
activesupport (= 5.2.2)
|
|
@@ -183,17 +183,17 @@ GEM
|
|
|
183
183
|
rb-inotify (0.10.1)
|
|
184
184
|
ffi (~> 1.0)
|
|
185
185
|
redis (4.1.3)
|
|
186
|
-
redis-actionpack (5.
|
|
187
|
-
actionpack (>=
|
|
188
|
-
redis-rack (>= 1, < 3)
|
|
186
|
+
redis-actionpack (5.2.0)
|
|
187
|
+
actionpack (>= 5, < 7)
|
|
188
|
+
redis-rack (>= 2.1.0, < 3)
|
|
189
189
|
redis-store (>= 1.1.0, < 2)
|
|
190
190
|
redis-activesupport (5.2.0)
|
|
191
191
|
activesupport (>= 3, < 7)
|
|
192
192
|
redis-store (>= 1.3, < 2)
|
|
193
193
|
redis-namespace (1.7.0)
|
|
194
194
|
redis (>= 3.0.4)
|
|
195
|
-
redis-rack (2.0
|
|
196
|
-
rack (>=
|
|
195
|
+
redis-rack (2.1.0)
|
|
196
|
+
rack (>= 2.0.8, < 3)
|
|
197
197
|
redis-store (>= 1.2, < 2)
|
|
198
198
|
redis-rails (5.0.2)
|
|
199
199
|
redis-actionpack (>= 5.0, < 6)
|
|
@@ -234,7 +234,7 @@ GEM
|
|
|
234
234
|
thor (0.20.3)
|
|
235
235
|
thread_safe (0.3.6)
|
|
236
236
|
timecop (0.9.1)
|
|
237
|
-
tzinfo (1.2.
|
|
237
|
+
tzinfo (1.2.6)
|
|
238
238
|
thread_safe (~> 0.1)
|
|
239
239
|
uniform_notifier (1.11.0)
|
|
240
240
|
vault (0.13.0)
|
|
@@ -38,12 +38,18 @@ module Istox
|
|
|
38
38
|
type = data[:exchanges][eid][:type]
|
|
39
39
|
name = eid
|
|
40
40
|
settings = { durable: data[:exchanges][eid][:durable] || false }
|
|
41
|
-
confirm = data[:exchanges][eid][:confirm] ||
|
|
41
|
+
confirm = data[:exchanges][eid][:confirm] || -1
|
|
42
42
|
[type, name, settings, confirm]
|
|
43
43
|
rescue
|
|
44
44
|
nil
|
|
45
45
|
end
|
|
46
46
|
|
|
47
|
+
def confirm_mode(eid)
|
|
48
|
+
data[:exchanges][eid][:confirm] || -1
|
|
49
|
+
rescue
|
|
50
|
+
nil
|
|
51
|
+
end
|
|
52
|
+
|
|
47
53
|
def queues_keys_for_subscribe()
|
|
48
54
|
data['queues'].keys
|
|
49
55
|
end
|
|
@@ -96,6 +102,13 @@ module Istox
|
|
|
96
102
|
nil
|
|
97
103
|
end
|
|
98
104
|
|
|
105
|
+
def queue_single_consumer?(consumer_key)
|
|
106
|
+
single_consumer = queue_config_from_consumer_key!(consumer_key)['single_consumer']
|
|
107
|
+
return false if single_consumer.nil?
|
|
108
|
+
|
|
109
|
+
single_consumer
|
|
110
|
+
end
|
|
111
|
+
|
|
99
112
|
# Default value: belonged exchange durable attr
|
|
100
113
|
def queue_durable?(consumer_key)
|
|
101
114
|
durable = queue_config_from_consumer_key!(consumer_key)['durable']
|
|
@@ -176,6 +189,28 @@ module Istox
|
|
|
176
189
|
options[:message_id]
|
|
177
190
|
end
|
|
178
191
|
|
|
192
|
+
def queue_ok?(conn, name)
|
|
193
|
+
Logger "queue_ok? #{name}"
|
|
194
|
+
ch = conn.create_channel
|
|
195
|
+
begin
|
|
196
|
+
q = ch.queue(name, passive: true)
|
|
197
|
+
count = q.consumer_count
|
|
198
|
+
log.debug "Consumer count number is #{count}"
|
|
199
|
+
if count.zero?
|
|
200
|
+
log.debug "queue #{name} has no consumer, ok!"
|
|
201
|
+
true
|
|
202
|
+
else
|
|
203
|
+
log.debug "queue #{name} has consumer, nok!"
|
|
204
|
+
false
|
|
205
|
+
end
|
|
206
|
+
rescue Bunny::NotFound => e
|
|
207
|
+
log.debug "Bunny::NotFound, #{e}"
|
|
208
|
+
false
|
|
209
|
+
ensure
|
|
210
|
+
ch.close if ch.open?
|
|
211
|
+
end
|
|
212
|
+
end
|
|
213
|
+
|
|
179
214
|
private
|
|
180
215
|
|
|
181
216
|
def data
|
|
@@ -64,12 +64,34 @@ module Istox
|
|
|
64
64
|
def channel
|
|
65
65
|
return @channel[Thread.current.object_id] if @channel.present? && @channel[Thread.current.object_id].present?
|
|
66
66
|
|
|
67
|
-
log.info
|
|
67
|
+
log.info "#{Thread.current.object_id} No channel yet, create 2 channels confirm-mode and non-confirm-mode ... ..."
|
|
68
68
|
@channel = Hash.new if @channel.nil?
|
|
69
69
|
@channel[Thread.current.object_id] = Hash.new
|
|
70
|
-
@channel[Thread.current.object_id]['confirm'] = ::Istox::BunnyBoot.channel(connection, confirm: true)
|
|
70
|
+
@channel[Thread.current.object_id]['confirm-0'] = ::Istox::BunnyBoot.channel(connection, confirm: true)
|
|
71
|
+
@channel[Thread.current.object_id]['confirm-1'] = ::Istox::BunnyBoot.channel(connection, confirm: true)
|
|
71
72
|
@channel[Thread.current.object_id]['noconfirm'] = ::Istox::BunnyBoot.channel(connection, confirm: false)
|
|
72
73
|
|
|
74
|
+
threadId = Thread.current.object_id
|
|
75
|
+
# Start new thread on receiving ACK from 'confirm-1' channel on the specified thread
|
|
76
|
+
Thread.new do
|
|
77
|
+
loop do
|
|
78
|
+
log.debug "[Async #{threadId}] Confirm mode channel, wait for confirmation"
|
|
79
|
+
success = @channel[threadId]['confirm-1'].wait_for_confirms
|
|
80
|
+
if success
|
|
81
|
+
log.debug "[Async] Confirm mode result: #{success}"
|
|
82
|
+
::Istox::RedisBoot.flushdb
|
|
83
|
+
else
|
|
84
|
+
@channel[threadId]['confirm-1'].nacked_set.each do |n|
|
|
85
|
+
log.debug "[Async #{threadId}] Confirm mode UnAcked Delivery Tag: #{n}"
|
|
86
|
+
::Istox::RedisBoot.incr("confirm:#{n.to_s}")
|
|
87
|
+
publish(exchange: ex.name, routing_key: routing_key, message: message, )
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
sleep 2
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
73
95
|
@channel[Thread.current.object_id]
|
|
74
96
|
end
|
|
75
97
|
|
|
@@ -90,23 +112,23 @@ module Istox
|
|
|
90
112
|
end
|
|
91
113
|
end
|
|
92
114
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
115
|
+
def channel_from_mode(mode)
|
|
116
|
+
if mode == 0 || mode == 1
|
|
117
|
+
channel["confirm-#{mode.to_s}"]
|
|
118
|
+
else
|
|
119
|
+
channel['noconfirm']
|
|
120
|
+
end
|
|
97
121
|
end
|
|
98
122
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
channel['noconfirm']
|
|
102
|
-
# channel_fake
|
|
123
|
+
def confirm_mode(eid)
|
|
124
|
+
::Istox::BunnyBoot.confirm_mode eid
|
|
103
125
|
end
|
|
104
126
|
|
|
105
127
|
def exchanges
|
|
106
128
|
return @exchanges[Thread.current.object_id] if @exchanges.present? && @exchanges[Thread.current.object_id].present?
|
|
107
129
|
|
|
108
130
|
@exchanges = Hash.new if @exchanges.nil?
|
|
109
|
-
@exchanges[Thread.current.object_id] = { default: channel['confirm'].default_exchange }
|
|
131
|
+
@exchanges[Thread.current.object_id] = { default: channel['confirm-1'].default_exchange }
|
|
110
132
|
|
|
111
133
|
@exchanges[Thread.current.object_id]
|
|
112
134
|
# @exchanges ||= { default: channel['confirm'].default_exchange }
|
|
@@ -119,7 +141,8 @@ module Istox
|
|
|
119
141
|
log.info "Declare exchange #{id} on channel"
|
|
120
142
|
e = ::Istox::BunnyBoot.exchange(id)
|
|
121
143
|
e = [type, id, { durable: durable || true }, options['publish_confirm'] || true] if e.nil?
|
|
122
|
-
|
|
144
|
+
|
|
145
|
+
c = channel_from_mode e.pop
|
|
123
146
|
ex = c.send *e
|
|
124
147
|
|
|
125
148
|
# For mandatory flag, listen to returned message
|
|
@@ -161,17 +184,16 @@ module Istox
|
|
|
161
184
|
# update_message_tracker(message_id, delivery_tag, 0, message)
|
|
162
185
|
end
|
|
163
186
|
|
|
187
|
+
create_tracker message_id, delivery_tag, 0, message if ex.channel.using_publisher_confirmations?
|
|
164
188
|
::Istox::BunnyBoot.publish(ex, message, routing_key: routing_key, message_id: message_id, type: 'manual')
|
|
165
189
|
|
|
166
|
-
if ex.channel.using_publisher_confirmations?
|
|
167
|
-
log.debug 'Confirm mode channel, wait for confirmation'
|
|
190
|
+
if ex.channel.using_publisher_confirmations? && confirm_mode(ex.name) == 0
|
|
168
191
|
success = ex.channel.wait_for_confirms
|
|
169
192
|
if success
|
|
170
|
-
|
|
193
|
+
# Flush everything on Redis
|
|
171
194
|
::Istox::RedisBoot.flushdb
|
|
172
195
|
else
|
|
173
196
|
ex.channel.nacked_set.each do |n|
|
|
174
|
-
log.debug "Confirm mode UnAcked Delivery Tag: #{n}"
|
|
175
197
|
::Istox::RedisBoot.incr("confirm:#{n.to_s}")
|
|
176
198
|
publish(exchange: ex.name, routing_key: routing_key, message: message, )
|
|
177
199
|
end
|
data/lib/istox/helpers/redis.rb
CHANGED
|
@@ -4,8 +4,8 @@ module Istox
|
|
|
4
4
|
class RedisBoot
|
|
5
5
|
class << self
|
|
6
6
|
|
|
7
|
-
def set(k,v)
|
|
8
|
-
redis.set(k,v)
|
|
7
|
+
def set(k,v, options = {})
|
|
8
|
+
redis.set(k,v, options)
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
def keys(p)
|
|
@@ -24,12 +24,24 @@ module Istox
|
|
|
24
24
|
redis.incr(k)
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
+
def lock(key, timeout = 3600)
|
|
28
|
+
loop do
|
|
29
|
+
break if set(key, 1, nx: true, px: timeout)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
begin
|
|
33
|
+
yield
|
|
34
|
+
ensure
|
|
35
|
+
del key
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
27
39
|
private
|
|
28
40
|
|
|
29
|
-
def redis
|
|
41
|
+
def redis(db = 4)
|
|
30
42
|
@redis ||= Redis.new(
|
|
31
43
|
url: ENV["REDIS_URL"] || 'redis://127.0.0.1',
|
|
32
|
-
db:
|
|
44
|
+
db: db
|
|
33
45
|
)
|
|
34
46
|
end
|
|
35
47
|
end
|
|
@@ -8,81 +8,108 @@ module Istox
|
|
|
8
8
|
# optionally can pass in consumer_key for single subscription / consumer_keys for multiple subcriptions
|
|
9
9
|
# consumer_key must be defined in amqp.yml
|
|
10
10
|
# if nothing pass in it will auto subscribe to all available consumers defined in amqp.yml queues key
|
|
11
|
-
def
|
|
11
|
+
def start_subscribe(subscribing_consumer_keys = [])
|
|
12
12
|
return if @flag
|
|
13
13
|
|
|
14
14
|
@mutex = Mutex.new unless @mutex.present?
|
|
15
15
|
@mutex.synchronize do
|
|
16
16
|
return if @flag
|
|
17
|
-
=begin
|
|
18
|
-
subscribing_consumer_keys = consumer_keys.present? ? consumer_keys : []
|
|
19
17
|
|
|
20
|
-
if subscribing_consumer_keys.empty?
|
|
21
|
-
subscribing_consumer_keys = ::Istox::BunnyBoot.queues_keys_for_subscribe
|
|
22
|
-
elsif subscribing_consumer_keys.empty? && consumer_key.present?
|
|
23
|
-
subscribing_consumer_keys = [consumer_key]
|
|
24
|
-
end
|
|
25
|
-
=end
|
|
26
|
-
subscribing_consumer_keys = ::Istox::BunnyBoot.queues_keys_for_subscribe
|
|
18
|
+
subscribing_consumer_keys = ::Istox::BunnyBoot.queues_keys_for_subscribe if subscribing_consumer_keys.empty?
|
|
27
19
|
subscribing_consumer_keys.each do |key|
|
|
28
|
-
log.debug "Do subscribe key #{key
|
|
29
|
-
|
|
20
|
+
log.debug "Do subscribe key #{key}"
|
|
21
|
+
if key.is_a?(String)
|
|
22
|
+
do_subscribe key.to_s
|
|
23
|
+
elsif key.is_a?(Hash)
|
|
24
|
+
do_subscribe key[:id], key[:suffix], key[:multiple]
|
|
25
|
+
end
|
|
30
26
|
end
|
|
31
27
|
|
|
32
28
|
@flag = true
|
|
33
29
|
end
|
|
34
30
|
end
|
|
35
31
|
|
|
32
|
+
def get_channels
|
|
33
|
+
@chs
|
|
34
|
+
end
|
|
35
|
+
|
|
36
36
|
private
|
|
37
37
|
|
|
38
|
-
def do_subscribe(consumer_key)
|
|
38
|
+
def do_subscribe(consumer_key, suffix = nil, multiple = nil)
|
|
39
39
|
manual_ack = ::Istox::BunnyBoot.queue_manual_ack? consumer_key
|
|
40
40
|
|
|
41
41
|
# Create Channel with specified pool_size and prefetch
|
|
42
42
|
pool_size = ::Istox::BunnyBoot.channel_pool_size consumer_key
|
|
43
43
|
prefetch = ::Istox::BunnyBoot.channel_prefetch consumer_key
|
|
44
|
-
|
|
44
|
+
conn = ::Istox::BunnyBoot.connection
|
|
45
|
+
active_channel = ::Istox::BunnyBoot.channel(conn, pool_size: pool_size, prefetch: prefetch)
|
|
46
|
+
@chs = [] if @chs.nil?
|
|
47
|
+
@chs << active_channel
|
|
48
|
+
|
|
49
|
+
# Declare queue and bind to exchange
|
|
50
|
+
queue_name = ::Istox::BunnyBoot.queue_name consumer_key
|
|
51
|
+
queue_name = "#{queue_name}.#{suffix}" unless suffix.nil?
|
|
52
|
+
queue_durable = ::Istox::BunnyBoot.queue_durable? consumer_key
|
|
53
|
+
begin
|
|
54
|
+
queue = active_channel.queue(queue_name, durable: queue_durable)
|
|
55
|
+
rescue Bunny::PreconditionFailed => e
|
|
56
|
+
# Must re-open a new channel, because now channel is already closed
|
|
57
|
+
active_channel = ::Istox::BunnyBoot.channel(::Istox::BunnyBoot.connection, pool_size: pool_size, prefetch: prefetch)
|
|
58
|
+
active_channel.queue_delete(queue_name)
|
|
59
|
+
queue = active_channel.queue(queue_name, durable: queue_durable)
|
|
60
|
+
end
|
|
45
61
|
|
|
46
62
|
# Declare exchange
|
|
47
63
|
exchange_name = ::Istox::BunnyBoot.exchange_name consumer_key
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
when 'direct'
|
|
65
|
-
exchange = active_channel.direct(exchange_name, durable: exchange_durable)
|
|
66
|
-
exchange_retry = if exchange_retry_name.nil?
|
|
67
|
-
nil
|
|
68
|
-
else
|
|
69
|
-
active_channel.direct(exchange_retry_name, durable: exchange_durable)
|
|
70
|
-
end
|
|
71
|
-
else
|
|
72
|
-
raise "Exchange type #{exchange_type} is not valid/supported."
|
|
64
|
+
unless exchange_name.nil?
|
|
65
|
+
exchange_name = ::Istox::BunnyBoot.exchange_name consumer_key
|
|
66
|
+
exchange_durable = ::Istox::BunnyBoot.exchange_durable? exchange_name
|
|
67
|
+
exchange_type = ::Istox::BunnyBoot.exchange_type exchange_name
|
|
68
|
+
|
|
69
|
+
begin
|
|
70
|
+
exchange = active_channel.send exchange_type, exchange_name, durable: exchange_durable
|
|
71
|
+
rescue NoMethodError => e
|
|
72
|
+
log.error e
|
|
73
|
+
raise "Exchange type #{exchange_type} is not valid/supported."
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# Bind queue to exchange
|
|
77
|
+
queue_options = {}
|
|
78
|
+
queue_options[:routing_key] = queue_name if exchange_type == 'direct' || exchange_type == 'topic'
|
|
79
|
+
queue.bind exchange, queue_options
|
|
73
80
|
end
|
|
74
81
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
82
|
+
if manual_ack
|
|
83
|
+
if exchange.nil?
|
|
84
|
+
letter_exchange = active_channel.default_exchange.name
|
|
85
|
+
else
|
|
86
|
+
letter_exchange = exchange.name
|
|
87
|
+
end
|
|
88
|
+
retry_queue = active_channel.queue("#{queue_name}.retry", arguments: {
|
|
89
|
+
'x-dead-letter-exchange': letter_exchange,
|
|
90
|
+
'x-dead-letter-routing-key': "#{queue_name}",
|
|
91
|
+
'x-message-ttl': (::Istox::BunnyBoot.queue_retry_gap consumer_key)
|
|
92
|
+
})
|
|
93
|
+
unless exchange_name.nil?
|
|
94
|
+
exchange_retry_name = "#{exchange_name}.retry"
|
|
95
|
+
exchange_retry = active_channel.send exchange_type, exchange_retry_name, durable: exchange_durable
|
|
96
|
+
retry_queue.bind exchange_retry, routing_key: "#{queue_name}.retry" if manual_ack
|
|
97
|
+
else
|
|
98
|
+
exchange_retry = active_channel.default_exchange
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
loop do
|
|
103
|
+
break unless ::Istox::BunnyBoot.queue_single_consumer? consumer_key
|
|
104
|
+
|
|
105
|
+
flag = false
|
|
106
|
+
::Istox::RedisBoot.lock("peatio:#{consumer_key}:locking") do
|
|
107
|
+
flag = ::Istox::BunnyBoot.queue_ok? conn, queue.name
|
|
108
|
+
end
|
|
109
|
+
break if flag
|
|
110
|
+
|
|
111
|
+
sleep 2
|
|
112
|
+
end
|
|
86
113
|
|
|
87
114
|
# Subscribe queue
|
|
88
115
|
queue.subscribe manual_ack: manual_ack do |delivery_info, metadata, payload|
|
|
@@ -100,13 +127,20 @@ module Istox
|
|
|
100
127
|
payload_object = ::Istox::CommonHelper.to_open_struct(processing_paylod)
|
|
101
128
|
|
|
102
129
|
ruby_class = ::Istox::BunnyBoot.ruby_class consumer_key
|
|
130
|
+
log.debug "#{'::' + (ruby_class.nil? ? "#{consumer_key.to_s.underscore}_consumer" : ruby_class).camelize}"
|
|
103
131
|
klass = Object.const_get(
|
|
104
132
|
'::' + (ruby_class.nil? ? "#{consumer_key.to_s.underscore}_consumer" : ruby_class).camelize
|
|
105
133
|
)
|
|
106
134
|
|
|
135
|
+
if suffix.nil?
|
|
136
|
+
worker = klass.new
|
|
137
|
+
else
|
|
138
|
+
worker = klass.new suffix
|
|
139
|
+
end
|
|
140
|
+
|
|
107
141
|
log.info "Processing in consumer: #{klass}, paylod: #{payload_object.to_h.inspect}"
|
|
108
142
|
|
|
109
|
-
|
|
143
|
+
result = worker.process(payload_object, metadata, delivery_info)
|
|
110
144
|
end
|
|
111
145
|
# active_channel.ack(delivery_info.delivery_tag) if manual_ack
|
|
112
146
|
rescue StandardError => e
|
|
@@ -130,9 +164,15 @@ module Istox
|
|
|
130
164
|
active_channel.nack(delivery_info.delivery_tag, false, true)
|
|
131
165
|
end
|
|
132
166
|
=end
|
|
133
|
-
|
|
134
167
|
ensure
|
|
135
|
-
|
|
168
|
+
if manual_ack
|
|
169
|
+
if !multiple.nil? && !result && result == multiple
|
|
170
|
+
multiple = true
|
|
171
|
+
else
|
|
172
|
+
multiple = false
|
|
173
|
+
end
|
|
174
|
+
active_channel.ack(delivery_info.delivery_tag, multiple)
|
|
175
|
+
end
|
|
136
176
|
end
|
|
137
177
|
end
|
|
138
178
|
end
|
data/lib/istox/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: istox
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.122
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Siong Leng
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-02-
|
|
11
|
+
date: 2020-02-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: awesome_print
|