keuss 1.6.9 → 1.6.12
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.
- package/Pipeline/Queue.js +12 -2
- package/Queue.js +17 -7
- package/TODO +1 -0
- package/backends/bucket-mongo-safe.js +42 -44
- package/backends/bucket-mongo.js +6 -8
- package/package.json +8 -8
- package/test/backends_bucket-at-least-once.js +48 -40
- package/test/backends_deadletter.js +10 -1
- package/test/backends_remove.js +6 -6
- package/test/backends_reserve-commit-rollback.js +32 -16
- package/.nyc_output/ad035de4-a3d3-451b-b2ad-402e8ed517b8.json +0 -1
- package/.nyc_output/c8683d6c-e7e6-496b-ab0d-1ff730837d08.json +0 -1
- package/.nyc_output/processinfo/ad035de4-a3d3-451b-b2ad-402e8ed517b8.json +0 -1
- package/.nyc_output/processinfo/c8683d6c-e7e6-496b-ab0d-1ff730837d08.json +0 -1
- package/.nyc_output/processinfo/index.json +0 -1
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -79
- package/coverage/index.html +0 -162
- package/coverage/keuss/Pipeline/BaseLink.js.html +0 -636
- package/coverage/keuss/Pipeline/Builder.js.html +0 -615
- package/coverage/keuss/Pipeline/ChoiceLink.js.html +0 -294
- package/coverage/keuss/Pipeline/DirectLink.js.html +0 -231
- package/coverage/keuss/Pipeline/Pipeline.js.html +0 -258
- package/coverage/keuss/Pipeline/Queue.js.html +0 -939
- package/coverage/keuss/Pipeline/Sink.js.html +0 -147
- package/coverage/keuss/Pipeline/index.html +0 -175
- package/coverage/keuss/QFactory-MongoDB-defaults.js.html +0 -219
- package/coverage/keuss/QFactory.js.html +0 -459
- package/coverage/keuss/Queue.js.html +0 -2274
- package/coverage/keuss/Signal.js.html +0 -312
- package/coverage/keuss/Stats.js.html +0 -174
- package/coverage/keuss/backends/bucket-mongo-safe.js.html +0 -2952
- package/coverage/keuss/backends/bucket-mongo.js.html +0 -1167
- package/coverage/keuss/backends/index.html +0 -175
- package/coverage/keuss/backends/mongo.js.html +0 -897
- package/coverage/keuss/backends/pl-mongo.js.html +0 -723
- package/coverage/keuss/backends/ps-mongo.js.html +0 -1038
- package/coverage/keuss/backends/redis-list.js.html +0 -513
- package/coverage/keuss/backends/redis-oq.js.html +0 -543
- package/coverage/keuss/bench/all-mongo.js.html +0 -393
- package/coverage/keuss/bench/index.html +0 -149
- package/coverage/keuss/bench/multi-q.js.html +0 -324
- package/coverage/keuss/bench/redis-oq-consumer-producer.js.html +0 -225
- package/coverage/keuss/bench/redis-oq-consumer.js.html +0 -189
- package/coverage/keuss/bench/redis-oq-producer.js.html +0 -198
- package/coverage/keuss/docusaurus/.docusaurus/client-modules.js.html +0 -93
- package/coverage/keuss/docusaurus/.docusaurus/docusaurus.config.js.html +0 -402
- package/coverage/keuss/docusaurus/.docusaurus/index.html +0 -136
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/01a85c17.4e57aa0a.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/09d5ad39.3009117f.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/1.12cf3eb8.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/12559443.a244228c.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/17896441.5efb3558.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/1be78505.f9c04817.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/2.4e2dc02c.js.html +0 -72
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/3.d549a05d.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/36.db0e809a.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/37637b3c.28c0900b.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/3d8d21df.2228b429.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/45a5cd1f.951da354.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/52c38f7a.785707bc.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/57ffbe3d.04d3e53e.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/5f7c35e9.2fa77599.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/6299bd84.ec197a3e.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/6875c492.cdf3e939.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/6beec1d2.6873e708.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/7b786ad4.bbce08e6.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/8070e160.400a4e57.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/88c93c54.e868a433.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/8d3e6f9e.aadf6d32.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/9bc74468.516633c5.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/9beb87c2.71e3744d.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/a3732fac.b0f98dbf.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/a6aa9e1f.6ac55e6c.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/baf0d4a2.b50efd2d.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/c4f5d8e4.e9dfd999.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/ccc49370.1831890b.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/d4942345.7d23b349.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/e2244795.4ea3d168.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/e64fe266.308265e8.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/f78725cc.5f3e115d.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/fa8d8063.2312a332.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/index.html +0 -565
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/main.66f1008c.js.html +0 -72
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/runtime~main.7d73b048.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/styles.b5ee3016.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/registry.js.html +0 -165
- package/coverage/keuss/docusaurus/.docusaurus/routes.js.html +0 -447
- package/coverage/keuss/docusaurus/build/01a85c17.4e57aa0a.js.html +0 -69
- package/coverage/keuss/docusaurus/build/09d5ad39.3009117f.js.html +0 -69
- package/coverage/keuss/docusaurus/build/1.12cf3eb8.js.html +0 -69
- package/coverage/keuss/docusaurus/build/12559443.a244228c.js.html +0 -69
- package/coverage/keuss/docusaurus/build/17896441.5efb3558.js.html +0 -69
- package/coverage/keuss/docusaurus/build/1be78505.f9c04817.js.html +0 -69
- package/coverage/keuss/docusaurus/build/2.4e2dc02c.js.html +0 -72
- package/coverage/keuss/docusaurus/build/3.d549a05d.js.html +0 -69
- package/coverage/keuss/docusaurus/build/36.db0e809a.js.html +0 -69
- package/coverage/keuss/docusaurus/build/37637b3c.28c0900b.js.html +0 -69
- package/coverage/keuss/docusaurus/build/3d8d21df.2228b429.js.html +0 -69
- package/coverage/keuss/docusaurus/build/45a5cd1f.951da354.js.html +0 -69
- package/coverage/keuss/docusaurus/build/52c38f7a.785707bc.js.html +0 -69
- package/coverage/keuss/docusaurus/build/57ffbe3d.04d3e53e.js.html +0 -69
- package/coverage/keuss/docusaurus/build/5f7c35e9.2fa77599.js.html +0 -69
- package/coverage/keuss/docusaurus/build/6299bd84.ec197a3e.js.html +0 -69
- package/coverage/keuss/docusaurus/build/6875c492.cdf3e939.js.html +0 -69
- package/coverage/keuss/docusaurus/build/6beec1d2.6873e708.js.html +0 -69
- package/coverage/keuss/docusaurus/build/7b786ad4.bbce08e6.js.html +0 -69
- package/coverage/keuss/docusaurus/build/8070e160.400a4e57.js.html +0 -69
- package/coverage/keuss/docusaurus/build/88c93c54.e868a433.js.html +0 -69
- package/coverage/keuss/docusaurus/build/8d3e6f9e.aadf6d32.js.html +0 -69
- package/coverage/keuss/docusaurus/build/9bc74468.516633c5.js.html +0 -69
- package/coverage/keuss/docusaurus/build/9beb87c2.71e3744d.js.html +0 -69
- package/coverage/keuss/docusaurus/build/a3732fac.b0f98dbf.js.html +0 -69
- package/coverage/keuss/docusaurus/build/a6aa9e1f.6ac55e6c.js.html +0 -69
- package/coverage/keuss/docusaurus/build/baf0d4a2.b50efd2d.js.html +0 -69
- package/coverage/keuss/docusaurus/build/c4f5d8e4.e9dfd999.js.html +0 -69
- package/coverage/keuss/docusaurus/build/ccc49370.1831890b.js.html +0 -69
- package/coverage/keuss/docusaurus/build/d4942345.7d23b349.js.html +0 -69
- package/coverage/keuss/docusaurus/build/e2244795.4ea3d168.js.html +0 -69
- package/coverage/keuss/docusaurus/build/e64fe266.308265e8.js.html +0 -69
- package/coverage/keuss/docusaurus/build/f78725cc.5f3e115d.js.html +0 -69
- package/coverage/keuss/docusaurus/build/fa8d8063.2312a332.js.html +0 -69
- package/coverage/keuss/docusaurus/build/index.html +0 -565
- package/coverage/keuss/docusaurus/build/main.66f1008c.js.html +0 -72
- package/coverage/keuss/docusaurus/build/runtime~main.7d73b048.js.html +0 -69
- package/coverage/keuss/docusaurus/build/styles.b5ee3016.js.html +0 -69
- package/coverage/keuss/docusaurus/docusaurus.config.js.html +0 -360
- package/coverage/keuss/docusaurus/index.html +0 -110
- package/coverage/keuss/docusaurus/sidebars.js.html +0 -96
- package/coverage/keuss/docusaurus/src/pages/index.html +0 -97
- package/coverage/keuss/docusaurus/src/pages/index.js.html +0 -450
- package/coverage/keuss/examples/pipelines/builder/index.html +0 -97
- package/coverage/keuss/examples/pipelines/builder/index.js.html +0 -450
- package/coverage/keuss/examples/pipelines/simplest/index.html +0 -97
- package/coverage/keuss/examples/pipelines/simplest/index.js.html +0 -183
- package/coverage/keuss/examples/pipelines/simulation-fork/index.html +0 -97
- package/coverage/keuss/examples/pipelines/simulation-fork/index.js.html +0 -414
- package/coverage/keuss/examples/snippets/01-simplest-pop-push.js.html +0 -195
- package/coverage/keuss/examples/snippets/02-simplest-reserve-rollback-commit.js.html +0 -201
- package/coverage/keuss/examples/snippets/03-simplest-producer-consumer-loops.js.html +0 -300
- package/coverage/keuss/examples/snippets/04-bucket-mongo-safe-insert-reserve-commit.js.html +0 -303
- package/coverage/keuss/examples/snippets/05-insert-reserve-rollback-deadletter.js.html +0 -384
- package/coverage/keuss/examples/snippets/06-random-consumer-producer.js.html +0 -879
- package/coverage/keuss/examples/snippets/index.html +0 -188
- package/coverage/keuss/examples/snippets/redislabs-consumer-producer.js.html +0 -201
- package/coverage/keuss/examples/snippets/with-redis-stats-and-signaller-consumer-producer.js.html +0 -222
- package/coverage/keuss/examples/webhooks/app.js.html +0 -279
- package/coverage/keuss/examples/webhooks/consumer.js.html +0 -363
- package/coverage/keuss/examples/webhooks/index.html +0 -123
- package/coverage/keuss/examples/webhooks/index.js.html +0 -234
- package/coverage/keuss/index.html +0 -149
- package/coverage/keuss/playground/index.html +0 -136
- package/coverage/keuss/playground/pl-rollback.js.html +0 -234
- package/coverage/keuss/playground/pl1.js.html +0 -291
- package/coverage/keuss/playground/q1.js.html +0 -168
- package/coverage/keuss/playground/simple-pl.js.html +0 -195
- package/coverage/keuss/signal/index.html +0 -123
- package/coverage/keuss/signal/local.js.html +0 -306
- package/coverage/keuss/signal/mongo-capped.js.html +0 -378
- package/coverage/keuss/signal/redis-pubsub.js.html +0 -399
- package/coverage/keuss/stats/index.html +0 -123
- package/coverage/keuss/stats/mem.js.html +0 -519
- package/coverage/keuss/stats/mongo.js.html +0 -930
- package/coverage/keuss/stats/redis.js.html +0 -894
- package/coverage/keuss/utils/RedisConn.js.html +0 -150
- package/coverage/keuss/utils/RedisOrderedQueue.js.html +0 -864
- package/coverage/keuss/utils/index.html +0 -110
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -170
- package/docusaurus/README.md +0 -33
- package/docusaurus/babel.config.js +0 -3
- package/docusaurus/blog/2020-08-04-welcome.md +0 -11
- package/docusaurus/docs/about.md +0 -13
- package/docusaurus/docs/api/factory.md +0 -102
- package/docusaurus/docs/api/queue.md +0 -247
- package/docusaurus/docs/api/signal.md +0 -38
- package/docusaurus/docs/api/stats.md +0 -37
- package/docusaurus/docs/changelog.md +0 -48
- package/docusaurus/docs/concepts.md +0 -116
- package/docusaurus/docs/examples.md +0 -10
- package/docusaurus/docs/quickstart.md +0 -195
- package/docusaurus/docs/style-guide.md +0 -202
- package/docusaurus/docs/usage/buckets.md +0 -43
- package/docusaurus/docs/usage/no-signaller.md +0 -16
- package/docusaurus/docs/usage/pipelines/about.md +0 -128
- package/docusaurus/docs/usage/pipelines/building.md +0 -158
- package/docusaurus/docs/usage/pipelines/examples.md +0 -10
- package/docusaurus/docs/usage/pipelines/processors.md +0 -187
- package/docusaurus/docs/usage/putting-all-together.md +0 -153
- package/docusaurus/docs/usage/redis-conns.md +0 -70
- package/docusaurus/docs/usage/shutdown.md +0 -11
- package/docusaurus/docusaurus.config.js +0 -97
- package/docusaurus/package.json +0 -33
- package/docusaurus/sidebars.js +0 -44
- package/docusaurus/src/css/custom.css +0 -25
- package/docusaurus/src/pages/index.js +0 -127
- package/docusaurus/src/pages/styles.module.css +0 -37
- package/docusaurus/static/.nojekyll +0 -0
- package/docusaurus/static/img/favicon.ico +0 -0
- package/docusaurus/static/img/logo.svg +0 -1
- package/docusaurus/yarn.lock +0 -8384
package/Pipeline/Queue.js
CHANGED
|
@@ -167,6 +167,10 @@ class PipelinedMongoQueue extends Queue {
|
|
|
167
167
|
this._embed_update_for_payload (upd, opts.update);
|
|
168
168
|
}
|
|
169
169
|
|
|
170
|
+
if (opts.hdrs) {
|
|
171
|
+
_.each (opts.hdrs, (v, k) => upd.$set['hdrs.' + k] = v);
|
|
172
|
+
}
|
|
173
|
+
|
|
170
174
|
this._col.updateOne (q, upd, {}, (err, result) => {
|
|
171
175
|
if (err) return callback (err);
|
|
172
176
|
callback (null, result && (result.modifiedCount == 1));
|
|
@@ -274,9 +278,15 @@ class PipelinedMongoQueue extends Queue {
|
|
|
274
278
|
|
|
275
279
|
|
|
276
280
|
//////////////////////////////////////////////
|
|
277
|
-
//
|
|
281
|
+
// redefinition from Queue
|
|
278
282
|
_move_to_deadletter (obj, cb) {
|
|
279
|
-
|
|
283
|
+
const hdrs = {
|
|
284
|
+
'x-dl-from-queue': this.name (),
|
|
285
|
+
'x-dl-t': new Date().toISOString (),
|
|
286
|
+
'x-dl-tries': obj.tries
|
|
287
|
+
};
|
|
288
|
+
|
|
289
|
+
this.pl_step (obj._id, this._factory.deadletter_queue (), {hdrs}, (err, res) => {
|
|
280
290
|
if (err) return cb (err);
|
|
281
291
|
this._stats.incr ('get');
|
|
282
292
|
this._factory.deadletter_queue ()._stats.incr ('put');
|
package/Queue.js
CHANGED
|
@@ -46,6 +46,7 @@ class Queue {
|
|
|
46
46
|
this._stats.incr ('reserve', 0);
|
|
47
47
|
this._stats.incr ('commit', 0);
|
|
48
48
|
this._stats.incr ('rollback', 0);
|
|
49
|
+
this._stats.incr ('deadletter', 0);
|
|
49
50
|
}
|
|
50
51
|
|
|
51
52
|
// if true, queue is being drained just before shutdown
|
|
@@ -432,14 +433,14 @@ class Queue {
|
|
|
432
433
|
let id = (obj._id ? obj._id : obj);
|
|
433
434
|
|
|
434
435
|
if (
|
|
435
|
-
(obj.tries) &&
|
|
436
|
-
(this._factory.deadletter_queue ()) &&
|
|
437
|
-
(this._factory.max_ko ()) &&
|
|
438
|
-
(obj.tries > this._factory.max_ko ())
|
|
436
|
+
(obj.tries) && // only if we got tries
|
|
437
|
+
(this._factory.deadletter_queue ()) && // AND the factory has a deadletter queue
|
|
438
|
+
(this._factory.max_ko ()) && // AND thee's a max ko attempts
|
|
439
|
+
(obj.tries > this._factory.max_ko ()) && // AND we got enough tries
|
|
440
|
+
(this.name () != '__deadletter__') // and this queue is not deadletter already
|
|
439
441
|
) {
|
|
440
442
|
debug ('%s: too many retries (%d), moving to deadletter', obj._id, obj.tries);
|
|
441
443
|
this._move_to_deadletter (obj, cb);
|
|
442
|
-
// TODO add from-what-queue to deadletter elements
|
|
443
444
|
}
|
|
444
445
|
else {
|
|
445
446
|
this.rollback (id, next_t, (err, res) => {
|
|
@@ -709,21 +710,30 @@ class Queue {
|
|
|
709
710
|
/////////////////////////////////////////////
|
|
710
711
|
_move_to_deadletter (obj, cb) {
|
|
711
712
|
// commit and move to deadletter
|
|
712
|
-
// ALSO NOT IN deadletter queue (to void loop)
|
|
713
713
|
// commit element in origin queue, push in deadletter afterwards
|
|
714
|
+
const opts = {
|
|
715
|
+
hdrs: _.clone (obj.hdrs || {})
|
|
716
|
+
};
|
|
717
|
+
|
|
718
|
+
// add some extra x-dl-* headers
|
|
719
|
+
opts.hdrs['x-dl-from-queue'] = this.name ();
|
|
720
|
+
opts.hdrs['x-dl-t'] = new Date().toISOString ();
|
|
721
|
+
opts.hdrs['x-dl-tries'] = obj.tries;
|
|
722
|
+
|
|
714
723
|
this.commit (obj._id, err => {
|
|
715
724
|
if (err) {
|
|
716
725
|
debug ('while committing %s prior to moving to deadletter: %j', obj._id, err);
|
|
717
726
|
return cb (err);
|
|
718
727
|
}
|
|
719
728
|
|
|
720
|
-
this._factory.deadletter_queue ().push (obj.payload, (err, res) => {
|
|
729
|
+
this._factory.deadletter_queue ().push (obj.payload, opts, (err, res) => {
|
|
721
730
|
if (err) {
|
|
722
731
|
debug ('while moving %s to deadletter: %j', obj._id, err);
|
|
723
732
|
return cb (err, 'deadletter');
|
|
724
733
|
}
|
|
725
734
|
else {
|
|
726
735
|
debug ('moved %s to deadletter with _id %s', obj._id, res);
|
|
736
|
+
this._stats.incr ('deadletter');
|
|
727
737
|
return cb (null, 'deadletter');
|
|
728
738
|
}
|
|
729
739
|
});
|
package/TODO
CHANGED
|
@@ -133,11 +133,13 @@ class Bucket {
|
|
|
133
133
|
q: q
|
|
134
134
|
});
|
|
135
135
|
|
|
136
|
-
if ((res && res.
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
136
|
+
if ((res && res.deletedCount) != 1) {
|
|
137
|
+
return cb({
|
|
138
|
+
err: 'Bucket flush: exactly one must be deleted',
|
|
139
|
+
e: err,
|
|
140
|
+
q: q
|
|
141
|
+
});
|
|
142
|
+
}
|
|
141
143
|
|
|
142
144
|
debug ('Bucket: deleted whole bucket %o', q);
|
|
143
145
|
cb (null, null);
|
|
@@ -216,7 +218,7 @@ class Bucket {
|
|
|
216
218
|
q: q
|
|
217
219
|
});
|
|
218
220
|
|
|
219
|
-
if (
|
|
221
|
+
if (res && (res.modifiedCount != 1)) return cb({
|
|
220
222
|
err: 'Bucket flush: exactly one must be updated',
|
|
221
223
|
e: err,
|
|
222
224
|
q: q,
|
|
@@ -650,17 +652,15 @@ class BucketMongoSafeQueue extends Queue {
|
|
|
650
652
|
//////////////////////////////////
|
|
651
653
|
// queue size including non-mature elements
|
|
652
654
|
totalSize (callback) {
|
|
653
|
-
this._col.aggregate ([
|
|
655
|
+
const cursor = this._col.aggregate ([
|
|
654
656
|
{$group:{_id:'t', v: {$sum: '$n'}}}
|
|
655
|
-
]
|
|
656
|
-
if (err) return callback (err);
|
|
657
|
+
]);
|
|
657
658
|
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
});
|
|
659
|
+
cursor.toArray ((err, res) => {
|
|
660
|
+
debug ('calculating totalSize: aggregation pipeline returns %o', res);
|
|
661
|
+
if (err) return callback (err);
|
|
662
|
+
if (res.length == 0) return callback (null, 0);
|
|
663
|
+
callback (null, res[0].v);
|
|
664
664
|
});
|
|
665
665
|
}
|
|
666
666
|
|
|
@@ -668,18 +668,16 @@ class BucketMongoSafeQueue extends Queue {
|
|
|
668
668
|
//////////////////////////////////
|
|
669
669
|
// queue size NOT including non-mature elements
|
|
670
670
|
size (callback) {
|
|
671
|
-
this._col.aggregate ([
|
|
671
|
+
const cursor = this._col.aggregate ([
|
|
672
672
|
{$match: {mature: {$lte: Queue.now ()}}},
|
|
673
673
|
{$group:{_id:'t', v: {$sum: '$n'}}}
|
|
674
|
-
]
|
|
675
|
-
if (err) return callback (err);
|
|
674
|
+
]);
|
|
676
675
|
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
});
|
|
676
|
+
cursor.toArray ((err, res) => {
|
|
677
|
+
debug ('calculating size: aggregation pipeline returns %o', res);
|
|
678
|
+
if (err) return callback (err);
|
|
679
|
+
if (res.length == 0) return callback (null, 0);
|
|
680
|
+
callback (null, res[0].v);
|
|
683
681
|
});
|
|
684
682
|
}
|
|
685
683
|
|
|
@@ -687,42 +685,39 @@ class BucketMongoSafeQueue extends Queue {
|
|
|
687
685
|
//////////////////////////////////
|
|
688
686
|
// queue size of non-mature elements only
|
|
689
687
|
schedSize (callback) {
|
|
690
|
-
this._col.aggregate ([
|
|
688
|
+
const cursor = this._col.aggregate ([
|
|
691
689
|
{$match: {
|
|
692
690
|
mature: {$gt: Queue.now ()},
|
|
693
691
|
reserved: {$exists: false}
|
|
694
692
|
}},
|
|
695
693
|
{$group:{_id:'t', v: {$sum: '$n'}}}
|
|
696
|
-
]
|
|
697
|
-
if (err) return callback (err);
|
|
694
|
+
]);
|
|
698
695
|
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
});
|
|
696
|
+
cursor.toArray ((err, res) => {
|
|
697
|
+
debug ('calculating schedSize: aggregation pipeline returns %o', res);
|
|
698
|
+
if (err) return callback (err);
|
|
699
|
+
if (res.length == 0) return callback (null, 0);
|
|
700
|
+
callback (null, res[0].v);
|
|
705
701
|
});
|
|
706
702
|
}
|
|
707
703
|
|
|
704
|
+
|
|
708
705
|
//////////////////////////////////
|
|
709
706
|
// queue size of non-mature elements only
|
|
710
707
|
resvSize (callback) {
|
|
711
|
-
this._col.aggregate ([
|
|
708
|
+
const cursor = this._col.aggregate ([
|
|
712
709
|
{$match: {
|
|
713
710
|
mature: {$gt: Queue.now ()},
|
|
714
711
|
reserved: {$exists: true}
|
|
715
712
|
}},
|
|
716
713
|
{$group:{_id:'t', v: {$sum: '$n'}}}
|
|
717
|
-
]
|
|
718
|
-
if (err) return callback (err);
|
|
714
|
+
]);
|
|
719
715
|
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
});
|
|
716
|
+
cursor.toArray ((err, res) => {
|
|
717
|
+
debug ('calculating resvSize: aggregation pipeline returns %o', res);
|
|
718
|
+
if (err) return callback (err);
|
|
719
|
+
if (res.length == 0) return callback (null, 0);
|
|
720
|
+
callback (null, res[0].v);
|
|
726
721
|
});
|
|
727
722
|
}
|
|
728
723
|
|
|
@@ -730,7 +725,11 @@ class BucketMongoSafeQueue extends Queue {
|
|
|
730
725
|
/////////////////////////////////////////
|
|
731
726
|
// get element from queue
|
|
732
727
|
next_t (callback) {
|
|
733
|
-
this._col.
|
|
728
|
+
this._col.findOne ({}, {
|
|
729
|
+
sort: {mature:1},
|
|
730
|
+
projection: {mature: 1}
|
|
731
|
+
},
|
|
732
|
+
(err, result) => {
|
|
734
733
|
if (err) return callback (err);
|
|
735
734
|
debug ('obtaining next_t: got %o', result && result.mature);
|
|
736
735
|
callback (null, result && result.mature);
|
|
@@ -738,7 +737,6 @@ class BucketMongoSafeQueue extends Queue {
|
|
|
738
737
|
}
|
|
739
738
|
|
|
740
739
|
|
|
741
|
-
|
|
742
740
|
//////////////////////////////////////////////
|
|
743
741
|
// remove by id
|
|
744
742
|
remove (id, callback) {
|
package/backends/bucket-mongo.js
CHANGED
|
@@ -205,16 +205,14 @@ class BucketMongoQueue extends Queue {
|
|
|
205
205
|
// queue size including non-mature elements
|
|
206
206
|
totalSize (callback) {
|
|
207
207
|
//////////////////////////////////
|
|
208
|
-
this._col.aggregate ([
|
|
208
|
+
const cursor = this._col.aggregate ([
|
|
209
209
|
{$group:{_id:'t', v: {$sum: '$n'}}}
|
|
210
|
-
]
|
|
211
|
-
if (err) return callback (err);
|
|
210
|
+
]);
|
|
212
211
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
});
|
|
212
|
+
cursor.toArray ((err, res) => {
|
|
213
|
+
if (err) return callback (err);
|
|
214
|
+
if (res.length == 0) return callback (null, 0);
|
|
215
|
+
callback (null, res[0].v);
|
|
218
216
|
});
|
|
219
217
|
}
|
|
220
218
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "keuss",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.12",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"queue",
|
|
6
6
|
"persistent",
|
|
@@ -26,19 +26,19 @@
|
|
|
26
26
|
},
|
|
27
27
|
"license": "GPL-3.0",
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@nodebb/mubsub": "~1.
|
|
30
|
-
"async": "~3.2.
|
|
31
|
-
"async-lock": "~1.3.
|
|
32
|
-
"debug": "~4.3.
|
|
33
|
-
"ioredis": "~
|
|
29
|
+
"@nodebb/mubsub": "~1.8.0",
|
|
30
|
+
"async": "~3.2.3",
|
|
31
|
+
"async-lock": "~1.3.1",
|
|
32
|
+
"debug": "~4.3.4",
|
|
33
|
+
"ioredis": "~5.0.4",
|
|
34
34
|
"lodash": "~4.17.21",
|
|
35
35
|
"mitt": "~3.0.0",
|
|
36
|
-
"mongodb": "~
|
|
36
|
+
"mongodb": "~4.5.0",
|
|
37
37
|
"uuid": "~8.3.2"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"chance": "~1.1.8",
|
|
41
|
-
"mocha": "~9.
|
|
41
|
+
"mocha": "~9.2.2",
|
|
42
42
|
"should": "~13.2.3"
|
|
43
43
|
},
|
|
44
44
|
"scripts": {
|
|
@@ -52,7 +52,8 @@ describe ('bucket-at-least-once with ' + MQ_item.label + ' queue backend', funct
|
|
|
52
52
|
function (cb) {q.totalSize (cb)},
|
|
53
53
|
function (cb) {q.next_t (cb)},
|
|
54
54
|
], function(err, results) {
|
|
55
|
-
|
|
55
|
+
if (err) return done (err);
|
|
56
|
+
results.should.eql ([{get: 0, put: 0, reserve: 0, commit: 0, rollback: 0, deadletter: 0}, 0, 0, null])
|
|
56
57
|
done();
|
|
57
58
|
});
|
|
58
59
|
});
|
|
@@ -67,15 +68,15 @@ describe ('bucket-at-least-once with ' + MQ_item.label + ' queue backend', funct
|
|
|
67
68
|
function (cb) {setTimeout (cb, 1111)},
|
|
68
69
|
function (cb) {q.size (function (err, size) {
|
|
69
70
|
size.should.equal (2);
|
|
70
|
-
cb();
|
|
71
|
+
cb(err);
|
|
71
72
|
})},
|
|
72
73
|
function (cb) {q.stats (function (err, res) {
|
|
73
|
-
res.should.eql ({get: 0, put: 2, reserve: 0, commit: 0, rollback: 0});
|
|
74
|
-
cb();
|
|
74
|
+
res.should.eql ({get: 0, put: 2, reserve: 0, commit: 0, rollback: 0, deadletter: 0});
|
|
75
|
+
cb(err);
|
|
75
76
|
})},
|
|
76
77
|
function (cb) {q.next_t (function (err, res) {
|
|
77
78
|
res.getTime().should.be.approximately(new Date().getTime(), 2000);
|
|
78
|
-
cb();
|
|
79
|
+
cb(err);
|
|
79
80
|
})},
|
|
80
81
|
function (cb) {q.pop ('c1', function (err, ret) {
|
|
81
82
|
ret.payload.should.eql ({elem:1, pl:'twetrwte'});
|
|
@@ -83,11 +84,11 @@ describe ('bucket-at-least-once with ' + MQ_item.label + ' queue backend', funct
|
|
|
83
84
|
})},
|
|
84
85
|
function (cb) {q.size (function (err, size) {
|
|
85
86
|
size.should.equal (0);
|
|
86
|
-
cb();
|
|
87
|
+
cb(err);
|
|
87
88
|
})},
|
|
88
89
|
function (cb) {q.stats (function (err, res) {
|
|
89
|
-
res.should.eql ({get: 1, put: 2, reserve: 0, commit: 0, rollback: 0});
|
|
90
|
-
cb();
|
|
90
|
+
res.should.eql ({get: 1, put: 2, reserve: 0, commit: 0, rollback: 0, deadletter: 0});
|
|
91
|
+
cb(err);
|
|
91
92
|
})},
|
|
92
93
|
function (cb) {q.pop ('c2', function (err, ret) {
|
|
93
94
|
ret.payload.should.eql ({elem:2, pl:'twetrwte'});
|
|
@@ -95,13 +96,14 @@ describe ('bucket-at-least-once with ' + MQ_item.label + ' queue backend', funct
|
|
|
95
96
|
})},
|
|
96
97
|
function (cb) {q.size (function (err, size) {
|
|
97
98
|
size.should.equal (0);
|
|
98
|
-
cb();
|
|
99
|
+
cb(err);
|
|
99
100
|
})},
|
|
100
101
|
function (cb) {q.stats (function (err, res) {
|
|
101
|
-
res.should.eql ({get: 2, put: 2, reserve: 0, commit: 0, rollback: 0});
|
|
102
|
-
cb();
|
|
102
|
+
res.should.eql ({get: 2, put: 2, reserve: 0, commit: 0, rollback: 0, deadletter: 0});
|
|
103
|
+
cb(err);
|
|
103
104
|
})},
|
|
104
105
|
], function(err, results) {
|
|
106
|
+
if (err) return done (err);
|
|
105
107
|
q.drain();
|
|
106
108
|
done();
|
|
107
109
|
});
|
|
@@ -136,13 +138,14 @@ describe ('bucket-at-least-once with ' + MQ_item.label + ' queue backend', funct
|
|
|
136
138
|
})},
|
|
137
139
|
function (cb) {q.size (function (err, size) {
|
|
138
140
|
size.should.equal (0);
|
|
139
|
-
cb();
|
|
141
|
+
cb(err);
|
|
140
142
|
})},
|
|
141
143
|
function (cb) {q.stats (function (err, res) {
|
|
142
|
-
res.should.eql ({get: 2, put: 2, reserve: 0, commit: 0, rollback: 0});
|
|
143
|
-
cb();
|
|
144
|
+
res.should.eql ({get: 2, put: 2, reserve: 0, commit: 0, rollback: 0, deadletter: 0});
|
|
145
|
+
cb(err);
|
|
144
146
|
})},
|
|
145
147
|
], function(err, results) {
|
|
148
|
+
if (err) return done (err);
|
|
146
149
|
q.drain();
|
|
147
150
|
done();
|
|
148
151
|
});
|
|
@@ -159,18 +162,18 @@ describe ('bucket-at-least-once with ' + MQ_item.label + ' queue backend', funct
|
|
|
159
162
|
(cb) => q.push ({elem:4, pl:'twetrwte'}, cb),
|
|
160
163
|
(cb) => setTimeout (cb, 666),
|
|
161
164
|
|
|
162
|
-
(cb) => q.size ((err, size) => {size.should.equal (4); cb(); }),
|
|
163
|
-
(cb) => q.stats ((err, res) => {res.should.eql ({get: 0, put: 4, reserve: 0, commit: 0, rollback: 0}); cb(); }),
|
|
165
|
+
(cb) => q.size ((err, size) => {size.should.equal (4); cb(err); }),
|
|
166
|
+
(cb) => q.stats ((err, res) => {res.should.eql ({get: 0, put: 4, reserve: 0, commit: 0, rollback: 0, deadletter: 0}); cb(err); }),
|
|
164
167
|
|
|
165
168
|
(cb) => q.push ({elem:5, pl:'twetrwte'}, cb),
|
|
166
169
|
(cb) => q.push ({elem:6, pl:'twetrwte'}, cb),
|
|
167
170
|
(cb) => q.push ({elem:7, pl:'twetrwte'}, cb),
|
|
168
171
|
(cb) => setTimeout (cb, 666),
|
|
169
172
|
|
|
170
|
-
(cb) => q.size ((err, size) => {size.should.equal (7); cb(); }),
|
|
171
|
-
(cb) => q.stats ((err, res) => {res.should.eql ({get: 0, put: 7, reserve: 0, commit: 0, rollback: 0}); cb(); }),
|
|
173
|
+
(cb) => q.size ((err, size) => {size.should.equal (7); cb(err); }),
|
|
174
|
+
(cb) => q.stats ((err, res) => {res.should.eql ({get: 0, put: 7, reserve: 0, commit: 0, rollback: 0, deadletter: 0}); cb(err); }),
|
|
172
175
|
|
|
173
|
-
(cb) => q.next_t ((err, res) => {res.getTime().should.be.approximately(new Date().getTime(), 2000); cb(); }),
|
|
176
|
+
(cb) => q.next_t ((err, res) => {res.getTime().should.be.approximately(new Date().getTime(), 2000); cb(err); }),
|
|
174
177
|
|
|
175
178
|
(cb) => {q.pop ('c1', (err, ret) => {ret.payload.should.eql ({elem:1, pl:'twetrwte'}); cb (err); })},
|
|
176
179
|
(cb) => {q.pop ('c1', (err, ret) => {ret.payload.should.eql ({elem:2, pl:'twetrwte'}); cb (err); })},
|
|
@@ -180,9 +183,10 @@ describe ('bucket-at-least-once with ' + MQ_item.label + ' queue backend', funct
|
|
|
180
183
|
(cb) => {q.pop ('c1', (err, ret) => {ret.payload.should.eql ({elem:6, pl:'twetrwte'}); cb (err); })},
|
|
181
184
|
(cb) => {q.pop ('c1', (err, ret) => {ret.payload.should.eql ({elem:7, pl:'twetrwte'}); cb (err); })},
|
|
182
185
|
|
|
183
|
-
(cb) => q.size ((err, size) => {size.should.equal (0); cb(); }),
|
|
184
|
-
(cb) => q.stats ((err, res) => {res.should.eql ({get: 7, put: 7, reserve: 0, commit: 0, rollback: 0}); cb(); }),
|
|
186
|
+
(cb) => q.size ((err, size) => {size.should.equal (0); cb(err); }),
|
|
187
|
+
(cb) => q.stats ((err, res) => {res.should.eql ({get: 7, put: 7, reserve: 0, commit: 0, rollback: 0, deadletter: 0}); cb(err); }),
|
|
185
188
|
], function(err, results) {
|
|
189
|
+
if (err) return done (err);
|
|
186
190
|
q.drain();
|
|
187
191
|
done();
|
|
188
192
|
});
|
|
@@ -199,19 +203,19 @@ describe ('bucket-at-least-once with ' + MQ_item.label + ' queue backend', funct
|
|
|
199
203
|
(cb) => q.push ({elem:4, pl:'twetrwte'}, {delay: 4}, cb),
|
|
200
204
|
(cb) => setTimeout (cb, 700),
|
|
201
205
|
|
|
202
|
-
(cb) => q.next_t ((err, res) => {res.getTime().should.be.approximately(new Date().getTime() + 3300, 100); cb(); }),
|
|
206
|
+
(cb) => q.next_t ((err, res) => {res.getTime().should.be.approximately(new Date().getTime() + 3300, 100); cb(err); }),
|
|
203
207
|
|
|
204
208
|
(cb) => q.push ({elem:5, pl:'twetrwte'}, {delay: 2}, cb),
|
|
205
209
|
(cb) => q.push ({elem:6, pl:'twetrwte'}, {delay: 1}, cb),
|
|
206
210
|
(cb) => q.push ({elem:7, pl:'twetrwte'}, {delay: 2}, cb),
|
|
207
211
|
(cb) => setTimeout (cb, 700),
|
|
208
212
|
|
|
209
|
-
(cb) => q.next_t ((err, res) => {res.getTime().should.be.approximately(new Date().getTime() + 1300, 100); cb(); }),
|
|
213
|
+
(cb) => q.next_t ((err, res) => {res.getTime().should.be.approximately(new Date().getTime() + 1300, 100); cb(err); }),
|
|
210
214
|
|
|
211
|
-
(cb) => q.size ((err, size) => {size.should.equal (0); cb(); }),
|
|
212
|
-
(cb) => q.totalSize ((err, size) => {size.should.equal (7); cb(); }),
|
|
213
|
-
(cb) => q.schedSize ((err, size) => {size.should.equal (7); cb(); }),
|
|
214
|
-
(cb) => q.stats ((err, res) => {res.should.eql ({get: 0, put: 7, reserve: 0, commit: 0, rollback: 0}); cb(); }),
|
|
215
|
+
(cb) => q.size ((err, size) => {size.should.equal (0); cb(err); }),
|
|
216
|
+
(cb) => q.totalSize ((err, size) => {size.should.equal (7); cb(err); }),
|
|
217
|
+
(cb) => q.schedSize ((err, size) => {size.should.equal (7); cb(err); }),
|
|
218
|
+
(cb) => q.stats ((err, res) => {res.should.eql ({get: 0, put: 7, reserve: 0, commit: 0, rollback: 0, deadletter: 0}); cb(err); }),
|
|
215
219
|
|
|
216
220
|
(cb) => {q.pop ('c1', (err, ret) => {ret.payload.should.eql ({elem:5, pl:'twetrwte'}); cb (err); })},
|
|
217
221
|
(cb) => {q.pop ('c1', (err, ret) => {ret.payload.should.eql ({elem:6, pl:'twetrwte'}); cb (err); })},
|
|
@@ -221,9 +225,10 @@ describe ('bucket-at-least-once with ' + MQ_item.label + ' queue backend', funct
|
|
|
221
225
|
(cb) => {q.pop ('c1', (err, ret) => {ret.payload.should.eql ({elem:3, pl:'twetrwte'}); cb (err); })},
|
|
222
226
|
(cb) => {q.pop ('c1', (err, ret) => {ret.payload.should.eql ({elem:4, pl:'twetrwte'}); cb (err); })},
|
|
223
227
|
|
|
224
|
-
(cb) => q.size ((err, size) => {size.should.equal (0); cb(); }),
|
|
225
|
-
(cb) => q.stats ((err, res) => {res.should.eql ({get: 7, put: 7, reserve: 0, commit: 0, rollback: 0}); cb(); }),
|
|
228
|
+
(cb) => q.size ((err, size) => {size.should.equal (0); cb(err); }),
|
|
229
|
+
(cb) => q.stats ((err, res) => {res.should.eql ({get: 7, put: 7, reserve: 0, commit: 0, rollback: 0, deadletter: 0}); cb(err); }),
|
|
226
230
|
], function(err, results) {
|
|
231
|
+
if (err) return done (err);
|
|
227
232
|
q.drain();
|
|
228
233
|
done();
|
|
229
234
|
});
|
|
@@ -238,19 +243,20 @@ describe ('bucket-at-least-once with ' + MQ_item.label + ' queue backend', funct
|
|
|
238
243
|
(cb) => q.push ({elem:2, pl:'twetrwte'}, cb),
|
|
239
244
|
(cb) => setTimeout (cb, 700),
|
|
240
245
|
|
|
241
|
-
(cb) => q.size ((err, size) => {size.should.equal (2); cb(); }),
|
|
242
|
-
(cb) => q.stats ((err, res) => {res.should.eql ({get: 0, put: 2, reserve: 0, commit: 0, rollback: 0}); cb(); }),
|
|
246
|
+
(cb) => q.size ((err, size) => {size.should.equal (2); cb(err); }),
|
|
247
|
+
(cb) => q.stats ((err, res) => {res.should.eql ({get: 0, put: 2, reserve: 0, commit: 0, rollback: 0, deadletter: 0}); cb(err); }),
|
|
243
248
|
|
|
244
249
|
(cb) => q.push ({elem:3, pl:'twetrwte'}, cb),
|
|
245
250
|
(cb) => setTimeout (cb, 700),
|
|
246
251
|
|
|
247
|
-
(cb) => q.size ((err, size) => {size.should.equal (3); cb(); }),
|
|
248
|
-
(cb) => q.stats ((err, res) => {res.should.eql ({get: 0, put: 3, reserve: 0, commit: 0, rollback: 0}); cb(); }),
|
|
252
|
+
(cb) => q.size ((err, size) => {size.should.equal (3); cb(err); }),
|
|
253
|
+
(cb) => q.stats ((err, res) => {res.should.eql ({get: 0, put: 3, reserve: 0, commit: 0, rollback: 0, deadletter: 0}); cb(err); }),
|
|
249
254
|
|
|
250
|
-
(cb) => q.next_t ((err, res) => {res.getTime().should.be.approximately(new Date().getTime() - 1400, 100); cb(); }),
|
|
255
|
+
(cb) => q.next_t ((err, res) => {res.getTime().should.be.approximately(new Date().getTime() - 1400, 100); cb(err); }),
|
|
251
256
|
|
|
252
257
|
(cb) => {
|
|
253
258
|
q.pop ('c1', {reserve: true}, (err, ret) => {
|
|
259
|
+
if (err) return cb (err);
|
|
254
260
|
ret.payload.should.eql ({elem:1, pl:'twetrwte'});
|
|
255
261
|
q.ko (ret._id, (new Date().getTime() + 5000 ), (err, res) => {
|
|
256
262
|
should (res).equal (true);
|
|
@@ -263,6 +269,7 @@ describe ('bucket-at-least-once with ' + MQ_item.label + ' queue backend', funct
|
|
|
263
269
|
|
|
264
270
|
(cb) => {
|
|
265
271
|
q.pop ('c1', {reserve: true}, (err, ret) => {
|
|
272
|
+
if (err) return cb (err);
|
|
266
273
|
ret.payload.should.eql ({elem:3, pl:'twetrwte'});
|
|
267
274
|
q.ko (ret._id, (new Date().getTime() + 3000 ), (err, res) => {
|
|
268
275
|
should (res).equal (true);
|
|
@@ -273,18 +280,19 @@ describe ('bucket-at-least-once with ' + MQ_item.label + ' queue backend', funct
|
|
|
273
280
|
|
|
274
281
|
(cb) => setTimeout (cb, 700),
|
|
275
282
|
|
|
276
|
-
(cb) => q.next_t ((err, res) => {res.getTime().should.be.approximately(new Date().getTime() + 2500, 500); cb(); }),
|
|
283
|
+
(cb) => q.next_t ((err, res) => {res.getTime().should.be.approximately(new Date().getTime() + 2500, 500); cb(err); }),
|
|
277
284
|
|
|
278
|
-
(cb) => q.size ((err, size) => {size.should.equal (0); cb(); }),
|
|
279
|
-
(cb) => q.totalSize ((err, size) => {size.should.equal (2); cb(); }),
|
|
280
|
-
(cb) => q.schedSize ((err, size) => {size.should.equal (2); cb(); }),
|
|
285
|
+
(cb) => q.size ((err, size) => {size.should.equal (0); cb(err); }),
|
|
286
|
+
(cb) => q.totalSize ((err, size) => {size.should.equal (2); cb(err); }),
|
|
287
|
+
(cb) => q.schedSize ((err, size) => {size.should.equal (2); cb(err); }),
|
|
281
288
|
|
|
282
289
|
(cb) => {q.pop ('c1', (err, ret) => {ret.payload.should.eql ({elem:3, pl:'twetrwte'}); cb (err); })},
|
|
283
290
|
(cb) => {q.pop ('c1', (err, ret) => {ret.payload.should.eql ({elem:1, pl:'twetrwte'}); cb (err); })},
|
|
284
291
|
|
|
285
|
-
(cb) => q.size ((err, size) => {size.should.equal (0); cb(); }),
|
|
286
|
-
(cb) => q.stats ((err, res) => {res.should.eql ({get: 3, put: 3, reserve: 2, commit: 0, rollback: 2}); cb(); }),
|
|
292
|
+
(cb) => q.size ((err, size) => {size.should.equal (0); cb(err); }),
|
|
293
|
+
(cb) => q.stats ((err, res) => {res.should.eql ({get: 3, put: 3, reserve: 2, commit: 0, rollback: 2, deadletter: 0}); cb(err); }),
|
|
287
294
|
], function(err, results) {
|
|
295
|
+
if (err) return done (err);
|
|
288
296
|
q.drain();
|
|
289
297
|
done();
|
|
290
298
|
});
|
|
@@ -111,6 +111,8 @@ function release_mq_factory (q, factory, cb) {
|
|
|
111
111
|
pl: 'twetrwte'
|
|
112
112
|
};
|
|
113
113
|
|
|
114
|
+
const hdrs = {aaa: 'qw', bbb: '666'};
|
|
115
|
+
|
|
114
116
|
async.waterfall ([
|
|
115
117
|
cb => get_mq_factory (MQ, factory_opts, cb),
|
|
116
118
|
(factory, cb) => {
|
|
@@ -120,7 +122,7 @@ function release_mq_factory (q, factory, cb) {
|
|
|
120
122
|
|
|
121
123
|
async.race ([
|
|
122
124
|
cb => async.series([
|
|
123
|
-
cb => q.push (pl, cb),
|
|
125
|
+
cb => q.push (pl, {hdrs}, cb),
|
|
124
126
|
cb => pop (q, stage, cb),
|
|
125
127
|
cb => reject (q, stage, (err) => {tries++;cb()}),
|
|
126
128
|
cb => pop (q, stage, cb),
|
|
@@ -139,6 +141,13 @@ function release_mq_factory (q, factory, cb) {
|
|
|
139
141
|
}),
|
|
140
142
|
cb => factory.deadletter_queue().pop('c2', (err, res) => {
|
|
141
143
|
res.payload.should.eql (pl);
|
|
144
|
+
res.hdrs.should.match ({
|
|
145
|
+
aaa: "qw",
|
|
146
|
+
bbb: "666",
|
|
147
|
+
'x-dl-from-queue': "test_queue_deadletter",
|
|
148
|
+
'x-dl-t': /.+/,
|
|
149
|
+
'x-dl-tries': 4
|
|
150
|
+
});
|
|
142
151
|
tries.should.equal (5);
|
|
143
152
|
cb (err);
|
|
144
153
|
})
|
package/test/backends_remove.js
CHANGED
|
@@ -130,7 +130,7 @@ function release_mq_factory (q, factory, cb) {
|
|
|
130
130
|
ctx.id = res[0];
|
|
131
131
|
ctx.id.should.not.be.null();
|
|
132
132
|
res[2].should.eql ({
|
|
133
|
-
stats: { get: 0, put: 1, reserve: 0, commit: 0, rollback: 0 },
|
|
133
|
+
stats: { get: 0, put: 1, reserve: 0, commit: 0, rollback: 0, deadletter: 0 },
|
|
134
134
|
tsize: 1,
|
|
135
135
|
rsize: is_redis ? null : 0
|
|
136
136
|
})
|
|
@@ -148,7 +148,7 @@ function release_mq_factory (q, factory, cb) {
|
|
|
148
148
|
cb => setTimeout (cb, 1000),
|
|
149
149
|
], (err, res) => {
|
|
150
150
|
res[0].should.eql ({
|
|
151
|
-
stats: { get: 0, put: 1, reserve: 0, commit: 0, rollback: 0 },
|
|
151
|
+
stats: { get: 0, put: 1, reserve: 0, commit: 0, rollback: 0, deadletter: 0 },
|
|
152
152
|
tsize: 0,
|
|
153
153
|
rsize: is_redis ? null : 0
|
|
154
154
|
});
|
|
@@ -195,7 +195,7 @@ function release_mq_factory (q, factory, cb) {
|
|
|
195
195
|
cb => setTimeout (cb, 1000),
|
|
196
196
|
], (err, res) => {
|
|
197
197
|
res[0].should.eql ({
|
|
198
|
-
stats: { get: 0, put: 1, reserve: 1, commit: 0, rollback: 0 },
|
|
198
|
+
stats: { get: 0, put: 1, reserve: 1, commit: 0, rollback: 0, deadletter: 0 },
|
|
199
199
|
tsize: 1,
|
|
200
200
|
rsize: is_redis ? null : 1
|
|
201
201
|
});
|
|
@@ -249,7 +249,7 @@ function release_mq_factory (q, factory, cb) {
|
|
|
249
249
|
cb => setTimeout (cb, 1000),
|
|
250
250
|
], (err, res) => {
|
|
251
251
|
res[0].should.eql ({
|
|
252
|
-
stats: { get: 0, put: 1, reserve: 1, commit: 0, rollback: 1 },
|
|
252
|
+
stats: { get: 0, put: 1, reserve: 1, commit: 0, rollback: 1, deadletter: 0 },
|
|
253
253
|
tsize: 0,
|
|
254
254
|
rsize: is_redis ? null : 0
|
|
255
255
|
});
|
|
@@ -278,7 +278,7 @@ function release_mq_factory (q, factory, cb) {
|
|
|
278
278
|
ctx.id = res[0];
|
|
279
279
|
ctx.id.should.not.be.null();
|
|
280
280
|
res[2].should.eql ({
|
|
281
|
-
stats: { get: 0, put: 1, reserve: 0, commit: 0, rollback: 0 },
|
|
281
|
+
stats: { get: 0, put: 1, reserve: 0, commit: 0, rollback: 0, deadletter: 0 },
|
|
282
282
|
tsize: 1,
|
|
283
283
|
rsize: is_redis ? null : 0
|
|
284
284
|
})
|
|
@@ -303,7 +303,7 @@ function release_mq_factory (q, factory, cb) {
|
|
|
303
303
|
cb => setTimeout (cb, 1000),
|
|
304
304
|
], (err, res) => {
|
|
305
305
|
res[0].should.eql ({
|
|
306
|
-
stats: { get: 0, put: 1, reserve: 0, commit: 0, rollback: 0 },
|
|
306
|
+
stats: { get: 0, put: 1, reserve: 0, commit: 0, rollback: 0, deadletter: 0 },
|
|
307
307
|
tsize: 0,
|
|
308
308
|
rsize: is_redis ? null : 0
|
|
309
309
|
});
|