@@ -986,15 +986,25 @@ export class MarQS {
986
986
}
987
987
988
988
async #callEnqueueMessage( message : MessagePayload ) {
989
+ const concurrencyKey = this . keys . currentConcurrencyKeyFromQueue ( message . queue ) ;
990
+ const envConcurrencyKey = this . keys . envCurrentConcurrencyKeyFromQueue ( message . queue ) ;
991
+ const orgConcurrencyKey = this . keys . orgCurrentConcurrencyKeyFromQueue ( message . queue ) ;
992
+
989
993
logger . debug ( "Calling enqueueMessage" , {
990
994
messagePayload : message ,
995
+ concurrencyKey,
996
+ envConcurrencyKey,
997
+ orgConcurrencyKey,
991
998
service : this . name ,
992
999
} ) ;
993
1000
994
1001
return this . redis . enqueueMessage (
995
1002
message . queue ,
996
1003
message . parentQueue ,
997
1004
this . keys . messageKey ( message . messageId ) ,
1005
+ concurrencyKey ,
1006
+ envConcurrencyKey ,
1007
+ orgConcurrencyKey ,
998
1008
message . queue ,
999
1009
message . messageId ,
1000
1010
JSON . stringify ( message ) ,
@@ -1268,11 +1278,14 @@ export class MarQS {
1268
1278
1269
1279
#registerCommands( ) {
1270
1280
this . redis . defineCommand ( "enqueueMessage" , {
1271
- numberOfKeys : 3 ,
1281
+ numberOfKeys : 6 ,
1272
1282
lua : `
1273
1283
local queue = KEYS[1]
1274
1284
local parentQueue = KEYS[2]
1275
1285
local messageKey = KEYS[3]
1286
+ local concurrencyKey = KEYS[4]
1287
+ local envCurrentConcurrencyKey = KEYS[5]
1288
+ local orgCurrentConcurrencyKey = KEYS[6]
1276
1289
1277
1290
local queueName = ARGV[1]
1278
1291
local messageId = ARGV[2]
@@ -1292,6 +1305,11 @@ if #earliestMessage == 0 then
1292
1305
else
1293
1306
redis.call('ZADD', parentQueue, earliestMessage[2], queueName)
1294
1307
end
1308
+
1309
+ -- Update the concurrency keys
1310
+ redis.call('SREM', concurrencyKey, messageId)
1311
+ redis.call('SREM', envCurrentConcurrencyKey, messageId)
1312
+ redis.call('SREM', orgCurrentConcurrencyKey, messageId)
1295
1313
` ,
1296
1314
} ) ;
1297
1315
@@ -1621,6 +1639,9 @@ declare module "ioredis" {
1621
1639
queue : string ,
1622
1640
parentQueue : string ,
1623
1641
messageKey : string ,
1642
+ concurrencyKey : string ,
1643
+ envConcurrencyKey : string ,
1644
+ orgConcurrencyKey : string ,
1624
1645
queueName : string ,
1625
1646
messageId : string ,
1626
1647
messageData : string ,
0 commit comments