@@ -1074,6 +1074,7 @@ export class MarQS {
1074
1074
concurrencyKey ,
1075
1075
envConcurrencyKey ,
1076
1076
orgConcurrencyKey ,
1077
+ this . keys . envQueueKeyFromQueue ( message . queue ) ,
1077
1078
message . queue ,
1078
1079
message . messageId ,
1079
1080
JSON . stringify ( message ) ,
@@ -1111,6 +1112,7 @@ export class MarQS {
1111
1112
currentConcurrencyKey ,
1112
1113
envCurrentConcurrencyKey ,
1113
1114
orgCurrentConcurrencyKey ,
1115
+ this . keys . envQueueKeyFromQueue ( messageQueue ) ,
1114
1116
messageQueue ,
1115
1117
String ( Date . now ( ) ) ,
1116
1118
String ( this . options . defaultEnvConcurrency ) ,
@@ -1187,6 +1189,7 @@ export class MarQS {
1187
1189
concurrencyKey ,
1188
1190
envConcurrencyKey ,
1189
1191
orgConcurrencyKey ,
1192
+ this . keys . envQueueKeyFromQueue ( messageQueue ) ,
1190
1193
messageId ,
1191
1194
messageQueue
1192
1195
) ;
@@ -1234,6 +1237,7 @@ export class MarQS {
1234
1237
envConcurrencyKey ,
1235
1238
orgConcurrencyKey ,
1236
1239
visibilityQueue ,
1240
+ this . keys . envQueueKeyFromQueue ( messageQueue ) ,
1237
1241
messageQueue ,
1238
1242
messageId ,
1239
1243
String ( Date . now ( ) ) ,
@@ -1347,14 +1351,15 @@ export class MarQS {
1347
1351
1348
1352
#registerCommands( ) {
1349
1353
this . redis . defineCommand ( "enqueueMessage" , {
1350
- numberOfKeys : 6 ,
1354
+ numberOfKeys : 7 ,
1351
1355
lua : `
1352
1356
local queue = KEYS[1]
1353
1357
local parentQueue = KEYS[2]
1354
1358
local messageKey = KEYS[3]
1355
1359
local concurrencyKey = KEYS[4]
1356
1360
local envCurrentConcurrencyKey = KEYS[5]
1357
1361
local orgCurrentConcurrencyKey = KEYS[6]
1362
+ local envQueue = KEYS[7]
1358
1363
1359
1364
local queueName = ARGV[1]
1360
1365
local messageId = ARGV[2]
@@ -1367,6 +1372,9 @@ redis.call('SET', messageKey, messageData)
1367
1372
-- Add the message to the queue
1368
1373
redis.call('ZADD', queue, messageScore, messageId)
1369
1374
1375
+ -- Add the message to the env queue
1376
+ redis.call('ZADD', envQueue, messageScore, messageId)
1377
+
1370
1378
-- Rebalance the parent queue
1371
1379
local earliestMessage = redis.call('ZRANGE', queue, 0, 0, 'WITHSCORES')
1372
1380
if #earliestMessage == 0 then
@@ -1383,7 +1391,7 @@ redis.call('SREM', orgCurrentConcurrencyKey, messageId)
1383
1391
} ) ;
1384
1392
1385
1393
this . redis . defineCommand ( "dequeueMessage" , {
1386
- numberOfKeys : 8 ,
1394
+ numberOfKeys : 9 ,
1387
1395
lua : `
1388
1396
-- Keys: childQueue, parentQueue, concurrencyLimitKey, envConcurrencyLimitKey, orgConcurrencyLimitKey, currentConcurrencyKey, envCurrentConcurrencyKey, orgCurrentConcurrencyKey
1389
1397
local childQueue = KEYS[1]
@@ -1394,6 +1402,7 @@ local orgConcurrencyLimitKey = KEYS[5]
1394
1402
local currentConcurrencyKey = KEYS[6]
1395
1403
local envCurrentConcurrencyKey = KEYS[7]
1396
1404
local orgCurrentConcurrencyKey = KEYS[8]
1405
+ local envQueueKey = KEYS[9]
1397
1406
1398
1407
-- Args: childQueueName, currentTime, defaultEnvConcurrencyLimit, defaultOrgConcurrencyLimit
1399
1408
local childQueueName = ARGV[1]
@@ -1438,6 +1447,7 @@ local messageScore = tonumber(messages[2])
1438
1447
1439
1448
-- Move message to timeout queue and update concurrency
1440
1449
redis.call('ZREM', childQueue, messageId)
1450
+ redis.call('ZREM', envQueueKey, messageId)
1441
1451
redis.call('SADD', currentConcurrencyKey, messageId)
1442
1452
redis.call('SADD', envCurrentConcurrencyKey, messageId)
1443
1453
redis.call('SADD', orgCurrentConcurrencyKey, messageId)
@@ -1474,7 +1484,7 @@ redis.call('SET', messageKey, messageData, 'GET')
1474
1484
} ) ;
1475
1485
1476
1486
this . redis . defineCommand ( "acknowledgeMessage" , {
1477
- numberOfKeys : 7 ,
1487
+ numberOfKeys : 8 ,
1478
1488
lua : `
1479
1489
-- Keys: parentQueue, messageKey, messageQueue, visibilityQueue, concurrencyKey, envCurrentConcurrencyKey, orgCurrentConcurrencyKey
1480
1490
local parentQueue = KEYS[1]
@@ -1484,6 +1494,7 @@ local visibilityQueue = KEYS[4]
1484
1494
local concurrencyKey = KEYS[5]
1485
1495
local envCurrentConcurrencyKey = KEYS[6]
1486
1496
local orgCurrentConcurrencyKey = KEYS[7]
1497
+ local envQueueKey = KEYS[8]
1487
1498
1488
1499
-- Args: messageId, messageQueueName
1489
1500
local messageId = ARGV[1]
@@ -1495,6 +1506,9 @@ redis.call('DEL', messageKey)
1495
1506
-- Remove the message from the queue
1496
1507
redis.call('ZREM', messageQueue, messageId)
1497
1508
1509
+ -- Remove the message from the env queue
1510
+ redis.call('ZREM', envQueueKey, messageId)
1511
+
1498
1512
-- Rebalance the parent queue
1499
1513
local earliestMessage = redis.call('ZRANGE', messageQueue, 0, 0, 'WITHSCORES')
1500
1514
if #earliestMessage == 0 then
@@ -1514,7 +1528,7 @@ redis.call('SREM', orgCurrentConcurrencyKey, messageId)
1514
1528
} ) ;
1515
1529
1516
1530
this . redis . defineCommand ( "nackMessage" , {
1517
- numberOfKeys : 7 ,
1531
+ numberOfKeys : 8 ,
1518
1532
lua : `
1519
1533
-- Keys: childQueueKey, parentQueueKey, visibilityQueue, concurrencyKey, envConcurrencyKey, orgConcurrencyKey, messageId
1520
1534
local messageKey = KEYS[1]
@@ -1524,6 +1538,7 @@ local concurrencyKey = KEYS[4]
1524
1538
local envConcurrencyKey = KEYS[5]
1525
1539
local orgConcurrencyKey = KEYS[6]
1526
1540
local visibilityQueue = KEYS[7]
1541
+ local envQueueKey = KEYS[8]
1527
1542
1528
1543
-- Args: childQueueName, messageId, currentTime, messageScore
1529
1544
local childQueueName = ARGV[1]
@@ -1547,6 +1562,9 @@ end
1547
1562
-- Enqueue the message into the queue
1548
1563
redis.call('ZADD', childQueueKey, messageScore, messageId)
1549
1564
1565
+ -- Enqueue the message into the env queue
1566
+ redis.call('ZADD', envQueueKey, messageScore, messageId)
1567
+
1550
1568
-- Rebalance the parent queue
1551
1569
local earliestMessage = redis.call('ZRANGE', childQueueKey, 0, 0, 'WITHSCORES')
1552
1570
if #earliestMessage == 0 then
@@ -1729,6 +1747,7 @@ declare module "ioredis" {
1729
1747
concurrencyKey : string ,
1730
1748
envConcurrencyKey : string ,
1731
1749
orgConcurrencyKey : string ,
1750
+ envQueue : string ,
1732
1751
queueName : string ,
1733
1752
messageId : string ,
1734
1753
messageData : string ,
@@ -1745,6 +1764,7 @@ declare module "ioredis" {
1745
1764
currentConcurrencyKey : string ,
1746
1765
envCurrentConcurrencyKey : string ,
1747
1766
orgCurrentConcurrencyKey : string ,
1767
+ envQueueKey : string ,
1748
1768
childQueueName : string ,
1749
1769
currentTime : string ,
1750
1770
defaultEnvConcurrencyLimit : string ,
@@ -1766,6 +1786,7 @@ declare module "ioredis" {
1766
1786
concurrencyKey : string ,
1767
1787
envConcurrencyKey : string ,
1768
1788
orgConcurrencyKey : string ,
1789
+ envQueueKey : string ,
1769
1790
messageId : string ,
1770
1791
messageQueueName : string ,
1771
1792
callback ?: Callback < void >
@@ -1779,6 +1800,7 @@ declare module "ioredis" {
1779
1800
envConcurrencyKey : string ,
1780
1801
orgConcurrencyKey : string ,
1781
1802
visibilityQueue : string ,
1803
+ envQueueKey : string ,
1782
1804
childQueueName : string ,
1783
1805
messageId : string ,
1784
1806
currentTime : string ,
0 commit comments