redis-smq 8.2.1 → 8.3.1

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.
Files changed (335) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cjs/src/common/event-bus/event-bus.d.ts +6 -0
  3. package/dist/cjs/src/common/event-bus/event-bus.d.ts.map +1 -0
  4. package/dist/cjs/src/common/event-bus/event-bus.js +13 -0
  5. package/dist/cjs/src/common/event-bus/event-bus.js.map +1 -0
  6. package/dist/cjs/src/common/index.d.ts +1 -0
  7. package/dist/cjs/src/common/index.d.ts.map +1 -1
  8. package/dist/cjs/src/common/index.js +1 -0
  9. package/dist/cjs/src/common/index.js.map +1 -1
  10. package/dist/cjs/src/common/redis-client/redis-client.d.ts +4 -9
  11. package/dist/cjs/src/common/redis-client/redis-client.d.ts.map +1 -1
  12. package/dist/cjs/src/common/redis-client/redis-client.js +8 -55
  13. package/dist/cjs/src/common/redis-client/redis-client.js.map +1 -1
  14. package/dist/cjs/src/common/redis-client/scripts/lua/acknowledge-message.lua +19 -8
  15. package/dist/cjs/src/common/redis-client/scripts/lua/create-queue.lua +15 -10
  16. package/dist/cjs/src/common/redis-client/scripts/lua/delete-consumer-group.lua +20 -9
  17. package/dist/cjs/src/common/redis-client/scripts/lua/delete-message.lua +87 -87
  18. package/dist/cjs/src/common/redis-client/scripts/lua/fetch-message-for-processing.lua +11 -3
  19. package/dist/cjs/src/common/redis-client/scripts/lua/handle-processing-queue.lua +53 -82
  20. package/dist/cjs/src/common/redis-client/scripts/lua/has-queue-rate-exceeded.lua +15 -8
  21. package/dist/cjs/src/common/redis-client/scripts/lua/init-consumer-queue.lua +12 -8
  22. package/dist/cjs/src/common/redis-client/scripts/lua/publish-message.lua +19 -18
  23. package/dist/cjs/src/common/redis-client/scripts/lua/publish-scheduled-message.lua +89 -119
  24. package/dist/cjs/src/common/redis-client/scripts/lua/requeue-message.lua +54 -53
  25. package/dist/cjs/src/common/redis-client/scripts/lua/schedule-message.lua +47 -76
  26. package/dist/cjs/src/common/redis-client/scripts/lua/set-queue-rate-limit.lua +4 -5
  27. package/dist/cjs/src/common/redis-client/scripts/scripts.d.ts +15 -3
  28. package/dist/cjs/src/common/redis-client/scripts/scripts.d.ts.map +1 -1
  29. package/dist/cjs/src/common/redis-client/scripts/scripts.js +2 -8
  30. package/dist/cjs/src/common/redis-client/scripts/scripts.js.map +1 -1
  31. package/dist/cjs/src/config/types/config.d.ts +4 -1
  32. package/dist/cjs/src/config/types/config.d.ts.map +1 -1
  33. package/dist/cjs/src/lib/consumer/consumer/consumer.d.ts +4 -5
  34. package/dist/cjs/src/lib/consumer/consumer/consumer.d.ts.map +1 -1
  35. package/dist/cjs/src/lib/consumer/consumer/consumer.js +6 -24
  36. package/dist/cjs/src/lib/consumer/consumer/consumer.js.map +1 -1
  37. package/dist/cjs/src/lib/consumer/consumer/event-bus-publisher.d.ts +1 -1
  38. package/dist/cjs/src/lib/consumer/consumer/event-bus-publisher.d.ts.map +1 -1
  39. package/dist/cjs/src/lib/consumer/consumer-heartbeat/consumer-heartbeat.d.ts +1 -1
  40. package/dist/cjs/src/lib/consumer/consumer-heartbeat/consumer-heartbeat.d.ts.map +1 -1
  41. package/dist/cjs/src/lib/consumer/consumer-heartbeat/consumer-heartbeat.js.map +1 -1
  42. package/dist/cjs/src/lib/consumer/consumer-heartbeat/event-bus-publisher.d.ts +1 -1
  43. package/dist/cjs/src/lib/consumer/consumer-heartbeat/event-bus-publisher.d.ts.map +1 -1
  44. package/dist/cjs/src/lib/consumer/message-handler/message-handler/consume-message/consume-message.d.ts +1 -1
  45. package/dist/cjs/src/lib/consumer/message-handler/message-handler/consume-message/consume-message.d.ts.map +1 -1
  46. package/dist/cjs/src/lib/consumer/message-handler/message-handler/consume-message/consume-message.js +25 -33
  47. package/dist/cjs/src/lib/consumer/message-handler/message-handler/consume-message/consume-message.js.map +1 -1
  48. package/dist/cjs/src/lib/consumer/message-handler/message-handler/consume-message/event-bus-publisher.d.ts +1 -1
  49. package/dist/cjs/src/lib/consumer/message-handler/message-handler/consume-message/event-bus-publisher.d.ts.map +1 -1
  50. package/dist/cjs/src/lib/consumer/message-handler/message-handler/consume-message/message-unacknowledgement.d.ts.map +1 -1
  51. package/dist/cjs/src/lib/consumer/message-handler/message-handler/consume-message/message-unacknowledgement.js +35 -51
  52. package/dist/cjs/src/lib/consumer/message-handler/message-handler/consume-message/message-unacknowledgement.js.map +1 -1
  53. package/dist/cjs/src/lib/consumer/message-handler/message-handler/consume-message/processing-queue.d.ts.map +1 -1
  54. package/dist/cjs/src/lib/consumer/message-handler/message-handler/consume-message/processing-queue.js +4 -10
  55. package/dist/cjs/src/lib/consumer/message-handler/message-handler/consume-message/processing-queue.js.map +1 -1
  56. package/dist/cjs/src/lib/consumer/message-handler/message-handler/dequeue-message/dequeue-message.d.ts +1 -1
  57. package/dist/cjs/src/lib/consumer/message-handler/message-handler/dequeue-message/dequeue-message.d.ts.map +1 -1
  58. package/dist/cjs/src/lib/consumer/message-handler/message-handler/dequeue-message/dequeue-message.js +12 -12
  59. package/dist/cjs/src/lib/consumer/message-handler/message-handler/dequeue-message/dequeue-message.js.map +1 -1
  60. package/dist/cjs/src/lib/consumer/message-handler/message-handler/dequeue-message/event-bus-publisher.d.ts +1 -1
  61. package/dist/cjs/src/lib/consumer/message-handler/message-handler/dequeue-message/event-bus-publisher.d.ts.map +1 -1
  62. package/dist/cjs/src/lib/consumer/message-handler/message-handler/even-bus-publisher.d.ts +1 -1
  63. package/dist/cjs/src/lib/consumer/message-handler/message-handler/even-bus-publisher.d.ts.map +1 -1
  64. package/dist/cjs/src/lib/consumer/message-handler/message-handler/message-handler.d.ts +1 -1
  65. package/dist/cjs/src/lib/consumer/message-handler/message-handler/multiplexed-message-handler.d.ts +1 -1
  66. package/dist/cjs/src/lib/consumer/message-handler/message-handler/multiplexed-message-handler.d.ts.map +1 -1
  67. package/dist/cjs/src/lib/consumer/message-handler-runner/event-bus-publisher.d.ts +1 -1
  68. package/dist/cjs/src/lib/consumer/message-handler-runner/event-bus-publisher.d.ts.map +1 -1
  69. package/dist/cjs/src/lib/consumer/message-handler-runner/message-handler-runner.d.ts +1 -1
  70. package/dist/cjs/src/lib/consumer/message-handler-runner/message-handler-runner.d.ts.map +1 -1
  71. package/dist/cjs/src/lib/consumer/message-handler-runner/multiplexed-message-handler-runner.d.ts +1 -1
  72. package/dist/cjs/src/lib/consumer/message-handler-runner/multiplexed-message-handler-runner.d.ts.map +1 -1
  73. package/dist/cjs/src/lib/consumer-groups/_/_save-consumer-group.js +1 -1
  74. package/dist/cjs/src/lib/consumer-groups/_/_save-consumer-group.js.map +1 -1
  75. package/dist/cjs/src/lib/consumer-groups/consumer-groups.d.ts +1 -1
  76. package/dist/cjs/src/lib/consumer-groups/consumer-groups.d.ts.map +1 -1
  77. package/dist/cjs/src/lib/consumer-groups/consumer-groups.js +25 -86
  78. package/dist/cjs/src/lib/consumer-groups/consumer-groups.js.map +1 -1
  79. package/dist/cjs/src/lib/exchange/exchange-fan-out/exchange-fan-out.d.ts.map +1 -1
  80. package/dist/cjs/src/lib/exchange/exchange-fan-out/exchange-fan-out.js +16 -72
  81. package/dist/cjs/src/lib/exchange/exchange-fan-out/exchange-fan-out.js.map +1 -1
  82. package/dist/cjs/src/lib/exchange/exchange-topic/exchange-topic.d.ts.map +1 -1
  83. package/dist/cjs/src/lib/exchange/exchange-topic/exchange-topic.js +10 -24
  84. package/dist/cjs/src/lib/exchange/exchange-topic/exchange-topic.js.map +1 -1
  85. package/dist/cjs/src/lib/index.d.ts +0 -1
  86. package/dist/cjs/src/lib/index.d.ts.map +1 -1
  87. package/dist/cjs/src/lib/index.js +0 -1
  88. package/dist/cjs/src/lib/index.js.map +1 -1
  89. package/dist/cjs/src/lib/message/_/_delete-message.d.ts +2 -1
  90. package/dist/cjs/src/lib/message/_/_delete-message.d.ts.map +1 -1
  91. package/dist/cjs/src/lib/message/_/_delete-message.js +47 -28
  92. package/dist/cjs/src/lib/message/_/_delete-message.js.map +1 -1
  93. package/dist/cjs/src/lib/message/message.d.ts +3 -3
  94. package/dist/cjs/src/lib/message/message.d.ts.map +1 -1
  95. package/dist/cjs/src/lib/message/message.js +103 -174
  96. package/dist/cjs/src/lib/message/message.js.map +1 -1
  97. package/dist/cjs/src/lib/message/types/delete-message.d.ts +12 -0
  98. package/dist/cjs/src/lib/message/types/delete-message.d.ts.map +1 -0
  99. package/dist/cjs/src/lib/{event-bus/types/config.js → message/types/delete-message.js} +1 -1
  100. package/dist/cjs/src/lib/message/types/delete-message.js.map +1 -0
  101. package/dist/cjs/src/lib/message/types/index.d.ts +1 -0
  102. package/dist/cjs/src/lib/message/types/index.d.ts.map +1 -1
  103. package/dist/cjs/src/lib/message/types/index.js +1 -0
  104. package/dist/cjs/src/lib/message/types/index.js.map +1 -1
  105. package/dist/cjs/src/lib/namespace/namespace.d.ts.map +1 -1
  106. package/dist/cjs/src/lib/namespace/namespace.js +10 -38
  107. package/dist/cjs/src/lib/namespace/namespace.js.map +1 -1
  108. package/dist/cjs/src/lib/producer/event-bus-publisher.d.ts +1 -1
  109. package/dist/cjs/src/lib/producer/event-bus-publisher.d.ts.map +1 -1
  110. package/dist/cjs/src/lib/producer/producer.d.ts +4 -5
  111. package/dist/cjs/src/lib/producer/producer.d.ts.map +1 -1
  112. package/dist/cjs/src/lib/producer/producer.js +1 -23
  113. package/dist/cjs/src/lib/producer/producer.js.map +1 -1
  114. package/dist/cjs/src/lib/producer/queue-consumer-groups-cache.d.ts +1 -1
  115. package/dist/cjs/src/lib/producer/queue-consumer-groups-cache.d.ts.map +1 -1
  116. package/dist/cjs/src/lib/queue/_/_delete-queue.js +1 -1
  117. package/dist/cjs/src/lib/queue/_/_delete-queue.js.map +1 -1
  118. package/dist/cjs/src/lib/queue/queue.d.ts +1 -1
  119. package/dist/cjs/src/lib/queue/queue.d.ts.map +1 -1
  120. package/dist/cjs/src/lib/queue/queue.js +90 -194
  121. package/dist/cjs/src/lib/queue/queue.js.map +1 -1
  122. package/dist/cjs/src/lib/queue-messages/queue-messages/queue-messages.d.ts.map +1 -1
  123. package/dist/cjs/src/lib/queue-messages/queue-messages/queue-messages.js +3 -11
  124. package/dist/cjs/src/lib/queue-messages/queue-messages/queue-messages.js.map +1 -1
  125. package/dist/cjs/src/lib/queue-messages/queue-messages/queue-pending-messages/queue-pending-messages.d.ts.map +1 -1
  126. package/dist/cjs/src/lib/queue-messages/queue-messages/queue-pending-messages/queue-pending-messages.js +9 -17
  127. package/dist/cjs/src/lib/queue-messages/queue-messages/queue-pending-messages/queue-pending-messages.js.map +1 -1
  128. package/dist/cjs/src/lib/queue-messages/queue-messages-manager/queue-messages-manager-abstract.d.ts.map +1 -1
  129. package/dist/cjs/src/lib/queue-messages/queue-messages-manager/queue-messages-manager-abstract.js +11 -43
  130. package/dist/cjs/src/lib/queue-messages/queue-messages-manager/queue-messages-manager-abstract.js.map +1 -1
  131. package/dist/cjs/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-list.d.ts.map +1 -1
  132. package/dist/cjs/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-list.js +6 -30
  133. package/dist/cjs/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-list.js.map +1 -1
  134. package/dist/cjs/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-set.d.ts.map +1 -1
  135. package/dist/cjs/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-set.js +10 -50
  136. package/dist/cjs/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-set.js.map +1 -1
  137. package/dist/cjs/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-sorted-set.d.ts.map +1 -1
  138. package/dist/cjs/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-sorted-set.js +8 -40
  139. package/dist/cjs/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-sorted-set.js.map +1 -1
  140. package/dist/cjs/src/lib/queue-rate-limit/queue-rate-limit.d.ts.map +1 -1
  141. package/dist/cjs/src/lib/queue-rate-limit/queue-rate-limit.js +16 -72
  142. package/dist/cjs/src/lib/queue-rate-limit/queue-rate-limit.js.map +1 -1
  143. package/dist/esm/src/common/event-bus/event-bus.d.ts +6 -0
  144. package/dist/esm/src/common/event-bus/event-bus.d.ts.map +1 -0
  145. package/dist/esm/src/common/event-bus/event-bus.js +9 -0
  146. package/dist/esm/src/common/event-bus/event-bus.js.map +1 -0
  147. package/dist/esm/src/common/index.d.ts +1 -0
  148. package/dist/esm/src/common/index.d.ts.map +1 -1
  149. package/dist/esm/src/common/index.js +1 -0
  150. package/dist/esm/src/common/index.js.map +1 -1
  151. package/dist/esm/src/common/redis-client/redis-client.d.ts +4 -9
  152. package/dist/esm/src/common/redis-client/redis-client.d.ts.map +1 -1
  153. package/dist/esm/src/common/redis-client/redis-client.js +11 -55
  154. package/dist/esm/src/common/redis-client/redis-client.js.map +1 -1
  155. package/dist/esm/src/common/redis-client/scripts/lua/acknowledge-message.lua +19 -8
  156. package/dist/esm/src/common/redis-client/scripts/lua/create-queue.lua +15 -10
  157. package/dist/esm/src/common/redis-client/scripts/lua/delete-consumer-group.lua +20 -9
  158. package/dist/esm/src/common/redis-client/scripts/lua/delete-message.lua +87 -87
  159. package/dist/esm/src/common/redis-client/scripts/lua/fetch-message-for-processing.lua +11 -3
  160. package/dist/esm/src/common/redis-client/scripts/lua/handle-processing-queue.lua +53 -82
  161. package/dist/esm/src/common/redis-client/scripts/lua/has-queue-rate-exceeded.lua +15 -8
  162. package/dist/esm/src/common/redis-client/scripts/lua/init-consumer-queue.lua +12 -8
  163. package/dist/esm/src/common/redis-client/scripts/lua/publish-message.lua +19 -18
  164. package/dist/esm/src/common/redis-client/scripts/lua/publish-scheduled-message.lua +89 -119
  165. package/dist/esm/src/common/redis-client/scripts/lua/requeue-message.lua +54 -53
  166. package/dist/esm/src/common/redis-client/scripts/lua/schedule-message.lua +47 -76
  167. package/dist/esm/src/common/redis-client/scripts/lua/set-queue-rate-limit.lua +4 -5
  168. package/dist/esm/src/common/redis-client/scripts/scripts.d.ts +15 -3
  169. package/dist/esm/src/common/redis-client/scripts/scripts.d.ts.map +1 -1
  170. package/dist/esm/src/common/redis-client/scripts/scripts.js +1 -6
  171. package/dist/esm/src/common/redis-client/scripts/scripts.js.map +1 -1
  172. package/dist/esm/src/config/types/config.d.ts +4 -1
  173. package/dist/esm/src/config/types/config.d.ts.map +1 -1
  174. package/dist/esm/src/lib/consumer/consumer/consumer.d.ts +4 -5
  175. package/dist/esm/src/lib/consumer/consumer/consumer.d.ts.map +1 -1
  176. package/dist/esm/src/lib/consumer/consumer/consumer.js +3 -21
  177. package/dist/esm/src/lib/consumer/consumer/consumer.js.map +1 -1
  178. package/dist/esm/src/lib/consumer/consumer/event-bus-publisher.d.ts +1 -1
  179. package/dist/esm/src/lib/consumer/consumer/event-bus-publisher.d.ts.map +1 -1
  180. package/dist/esm/src/lib/consumer/consumer-heartbeat/consumer-heartbeat.d.ts +1 -1
  181. package/dist/esm/src/lib/consumer/consumer-heartbeat/consumer-heartbeat.d.ts.map +1 -1
  182. package/dist/esm/src/lib/consumer/consumer-heartbeat/consumer-heartbeat.js.map +1 -1
  183. package/dist/esm/src/lib/consumer/consumer-heartbeat/event-bus-publisher.d.ts +1 -1
  184. package/dist/esm/src/lib/consumer/consumer-heartbeat/event-bus-publisher.d.ts.map +1 -1
  185. package/dist/esm/src/lib/consumer/message-handler/message-handler/consume-message/consume-message.d.ts +1 -1
  186. package/dist/esm/src/lib/consumer/message-handler/message-handler/consume-message/consume-message.d.ts.map +1 -1
  187. package/dist/esm/src/lib/consumer/message-handler/message-handler/consume-message/consume-message.js +26 -34
  188. package/dist/esm/src/lib/consumer/message-handler/message-handler/consume-message/consume-message.js.map +1 -1
  189. package/dist/esm/src/lib/consumer/message-handler/message-handler/consume-message/event-bus-publisher.d.ts +1 -1
  190. package/dist/esm/src/lib/consumer/message-handler/message-handler/consume-message/event-bus-publisher.d.ts.map +1 -1
  191. package/dist/esm/src/lib/consumer/message-handler/message-handler/consume-message/message-unacknowledgement.d.ts.map +1 -1
  192. package/dist/esm/src/lib/consumer/message-handler/message-handler/consume-message/message-unacknowledgement.js +36 -52
  193. package/dist/esm/src/lib/consumer/message-handler/message-handler/consume-message/message-unacknowledgement.js.map +1 -1
  194. package/dist/esm/src/lib/consumer/message-handler/message-handler/consume-message/processing-queue.d.ts.map +1 -1
  195. package/dist/esm/src/lib/consumer/message-handler/message-handler/consume-message/processing-queue.js +5 -11
  196. package/dist/esm/src/lib/consumer/message-handler/message-handler/consume-message/processing-queue.js.map +1 -1
  197. package/dist/esm/src/lib/consumer/message-handler/message-handler/dequeue-message/dequeue-message.d.ts +1 -1
  198. package/dist/esm/src/lib/consumer/message-handler/message-handler/dequeue-message/dequeue-message.d.ts.map +1 -1
  199. package/dist/esm/src/lib/consumer/message-handler/message-handler/dequeue-message/dequeue-message.js +1 -1
  200. package/dist/esm/src/lib/consumer/message-handler/message-handler/dequeue-message/dequeue-message.js.map +1 -1
  201. package/dist/esm/src/lib/consumer/message-handler/message-handler/dequeue-message/event-bus-publisher.d.ts +1 -1
  202. package/dist/esm/src/lib/consumer/message-handler/message-handler/dequeue-message/event-bus-publisher.d.ts.map +1 -1
  203. package/dist/esm/src/lib/consumer/message-handler/message-handler/even-bus-publisher.d.ts +1 -1
  204. package/dist/esm/src/lib/consumer/message-handler/message-handler/even-bus-publisher.d.ts.map +1 -1
  205. package/dist/esm/src/lib/consumer/message-handler/message-handler/message-handler.d.ts +1 -1
  206. package/dist/esm/src/lib/consumer/message-handler/message-handler/multiplexed-message-handler.d.ts +1 -1
  207. package/dist/esm/src/lib/consumer/message-handler/message-handler/multiplexed-message-handler.d.ts.map +1 -1
  208. package/dist/esm/src/lib/consumer/message-handler-runner/event-bus-publisher.d.ts +1 -1
  209. package/dist/esm/src/lib/consumer/message-handler-runner/event-bus-publisher.d.ts.map +1 -1
  210. package/dist/esm/src/lib/consumer/message-handler-runner/message-handler-runner.d.ts +1 -1
  211. package/dist/esm/src/lib/consumer/message-handler-runner/message-handler-runner.d.ts.map +1 -1
  212. package/dist/esm/src/lib/consumer/message-handler-runner/multiplexed-message-handler-runner.d.ts +1 -1
  213. package/dist/esm/src/lib/consumer/message-handler-runner/multiplexed-message-handler-runner.d.ts.map +1 -1
  214. package/dist/esm/src/lib/consumer-groups/_/_save-consumer-group.js +1 -1
  215. package/dist/esm/src/lib/consumer-groups/_/_save-consumer-group.js.map +1 -1
  216. package/dist/esm/src/lib/consumer-groups/consumer-groups.d.ts +1 -1
  217. package/dist/esm/src/lib/consumer-groups/consumer-groups.d.ts.map +1 -1
  218. package/dist/esm/src/lib/consumer-groups/consumer-groups.js +23 -84
  219. package/dist/esm/src/lib/consumer-groups/consumer-groups.js.map +1 -1
  220. package/dist/esm/src/lib/exchange/exchange-fan-out/exchange-fan-out.d.ts.map +1 -1
  221. package/dist/esm/src/lib/exchange/exchange-fan-out/exchange-fan-out.js +17 -73
  222. package/dist/esm/src/lib/exchange/exchange-fan-out/exchange-fan-out.js.map +1 -1
  223. package/dist/esm/src/lib/exchange/exchange-topic/exchange-topic.d.ts.map +1 -1
  224. package/dist/esm/src/lib/exchange/exchange-topic/exchange-topic.js +11 -25
  225. package/dist/esm/src/lib/exchange/exchange-topic/exchange-topic.js.map +1 -1
  226. package/dist/esm/src/lib/index.d.ts +0 -1
  227. package/dist/esm/src/lib/index.d.ts.map +1 -1
  228. package/dist/esm/src/lib/index.js +0 -1
  229. package/dist/esm/src/lib/index.js.map +1 -1
  230. package/dist/esm/src/lib/message/_/_delete-message.d.ts +2 -1
  231. package/dist/esm/src/lib/message/_/_delete-message.d.ts.map +1 -1
  232. package/dist/esm/src/lib/message/_/_delete-message.js +50 -31
  233. package/dist/esm/src/lib/message/_/_delete-message.js.map +1 -1
  234. package/dist/esm/src/lib/message/message.d.ts +3 -3
  235. package/dist/esm/src/lib/message/message.d.ts.map +1 -1
  236. package/dist/esm/src/lib/message/message.js +104 -175
  237. package/dist/esm/src/lib/message/message.js.map +1 -1
  238. package/dist/esm/src/lib/message/types/delete-message.d.ts +12 -0
  239. package/dist/esm/src/lib/message/types/delete-message.d.ts.map +1 -0
  240. package/dist/esm/src/lib/message/types/delete-message.js +2 -0
  241. package/dist/esm/src/lib/message/types/delete-message.js.map +1 -0
  242. package/dist/esm/src/lib/message/types/index.d.ts +1 -0
  243. package/dist/esm/src/lib/message/types/index.d.ts.map +1 -1
  244. package/dist/esm/src/lib/message/types/index.js +1 -0
  245. package/dist/esm/src/lib/message/types/index.js.map +1 -1
  246. package/dist/esm/src/lib/namespace/namespace.d.ts.map +1 -1
  247. package/dist/esm/src/lib/namespace/namespace.js +11 -39
  248. package/dist/esm/src/lib/namespace/namespace.js.map +1 -1
  249. package/dist/esm/src/lib/producer/event-bus-publisher.d.ts +1 -1
  250. package/dist/esm/src/lib/producer/event-bus-publisher.d.ts.map +1 -1
  251. package/dist/esm/src/lib/producer/producer.d.ts +4 -5
  252. package/dist/esm/src/lib/producer/producer.d.ts.map +1 -1
  253. package/dist/esm/src/lib/producer/producer.js +2 -24
  254. package/dist/esm/src/lib/producer/producer.js.map +1 -1
  255. package/dist/esm/src/lib/producer/queue-consumer-groups-cache.d.ts +1 -1
  256. package/dist/esm/src/lib/producer/queue-consumer-groups-cache.d.ts.map +1 -1
  257. package/dist/esm/src/lib/queue/_/_delete-queue.js +1 -1
  258. package/dist/esm/src/lib/queue/_/_delete-queue.js.map +1 -1
  259. package/dist/esm/src/lib/queue/queue.d.ts +1 -1
  260. package/dist/esm/src/lib/queue/queue.d.ts.map +1 -1
  261. package/dist/esm/src/lib/queue/queue.js +88 -192
  262. package/dist/esm/src/lib/queue/queue.js.map +1 -1
  263. package/dist/esm/src/lib/queue-messages/queue-messages/queue-messages.d.ts.map +1 -1
  264. package/dist/esm/src/lib/queue-messages/queue-messages/queue-messages.js +4 -12
  265. package/dist/esm/src/lib/queue-messages/queue-messages/queue-messages.js.map +1 -1
  266. package/dist/esm/src/lib/queue-messages/queue-messages/queue-pending-messages/queue-pending-messages.d.ts.map +1 -1
  267. package/dist/esm/src/lib/queue-messages/queue-messages/queue-pending-messages/queue-pending-messages.js +10 -18
  268. package/dist/esm/src/lib/queue-messages/queue-messages/queue-pending-messages/queue-pending-messages.js.map +1 -1
  269. package/dist/esm/src/lib/queue-messages/queue-messages-manager/queue-messages-manager-abstract.d.ts.map +1 -1
  270. package/dist/esm/src/lib/queue-messages/queue-messages-manager/queue-messages-manager-abstract.js +12 -44
  271. package/dist/esm/src/lib/queue-messages/queue-messages-manager/queue-messages-manager-abstract.js.map +1 -1
  272. package/dist/esm/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-list.d.ts.map +1 -1
  273. package/dist/esm/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-list.js +7 -31
  274. package/dist/esm/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-list.js.map +1 -1
  275. package/dist/esm/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-set.d.ts.map +1 -1
  276. package/dist/esm/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-set.js +11 -51
  277. package/dist/esm/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-set.js.map +1 -1
  278. package/dist/esm/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-sorted-set.d.ts.map +1 -1
  279. package/dist/esm/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-sorted-set.js +9 -41
  280. package/dist/esm/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-sorted-set.js.map +1 -1
  281. package/dist/esm/src/lib/queue-rate-limit/queue-rate-limit.d.ts.map +1 -1
  282. package/dist/esm/src/lib/queue-rate-limit/queue-rate-limit.js +17 -73
  283. package/dist/esm/src/lib/queue-rate-limit/queue-rate-limit.js.map +1 -1
  284. package/package.json +2 -2
  285. package/dist/cjs/src/common/redis-client/scripts/lua/cleanup-offline-consumer.lua +0 -33
  286. package/dist/cjs/src/common/redis-client/scripts/lua/delete-queue-messages.lua +0 -21
  287. package/dist/cjs/src/lib/event-bus/errors/event-bus-instance-lock.error.d.ts +0 -4
  288. package/dist/cjs/src/lib/event-bus/errors/event-bus-instance-lock.error.d.ts.map +0 -1
  289. package/dist/cjs/src/lib/event-bus/errors/event-bus-instance-lock.error.js +0 -8
  290. package/dist/cjs/src/lib/event-bus/errors/event-bus-instance-lock.error.js.map +0 -1
  291. package/dist/cjs/src/lib/event-bus/errors/index.d.ts +0 -2
  292. package/dist/cjs/src/lib/event-bus/errors/index.d.ts.map +0 -1
  293. package/dist/cjs/src/lib/event-bus/errors/index.js +0 -6
  294. package/dist/cjs/src/lib/event-bus/errors/index.js.map +0 -1
  295. package/dist/cjs/src/lib/event-bus/event-bus.d.ts +0 -11
  296. package/dist/cjs/src/lib/event-bus/event-bus.d.ts.map +0 -1
  297. package/dist/cjs/src/lib/event-bus/event-bus.js +0 -58
  298. package/dist/cjs/src/lib/event-bus/event-bus.js.map +0 -1
  299. package/dist/cjs/src/lib/event-bus/index.d.ts +0 -4
  300. package/dist/cjs/src/lib/event-bus/index.d.ts.map +0 -1
  301. package/dist/cjs/src/lib/event-bus/index.js +0 -20
  302. package/dist/cjs/src/lib/event-bus/index.js.map +0 -1
  303. package/dist/cjs/src/lib/event-bus/types/config.d.ts +0 -4
  304. package/dist/cjs/src/lib/event-bus/types/config.d.ts.map +0 -1
  305. package/dist/cjs/src/lib/event-bus/types/config.js.map +0 -1
  306. package/dist/cjs/src/lib/event-bus/types/index.d.ts +0 -2
  307. package/dist/cjs/src/lib/event-bus/types/index.d.ts.map +0 -1
  308. package/dist/cjs/src/lib/event-bus/types/index.js +0 -18
  309. package/dist/cjs/src/lib/event-bus/types/index.js.map +0 -1
  310. package/dist/esm/src/common/redis-client/scripts/lua/cleanup-offline-consumer.lua +0 -33
  311. package/dist/esm/src/common/redis-client/scripts/lua/delete-queue-messages.lua +0 -21
  312. package/dist/esm/src/lib/event-bus/errors/event-bus-instance-lock.error.d.ts +0 -4
  313. package/dist/esm/src/lib/event-bus/errors/event-bus-instance-lock.error.d.ts.map +0 -1
  314. package/dist/esm/src/lib/event-bus/errors/event-bus-instance-lock.error.js +0 -4
  315. package/dist/esm/src/lib/event-bus/errors/event-bus-instance-lock.error.js.map +0 -1
  316. package/dist/esm/src/lib/event-bus/errors/index.d.ts +0 -2
  317. package/dist/esm/src/lib/event-bus/errors/index.d.ts.map +0 -1
  318. package/dist/esm/src/lib/event-bus/errors/index.js +0 -2
  319. package/dist/esm/src/lib/event-bus/errors/index.js.map +0 -1
  320. package/dist/esm/src/lib/event-bus/event-bus.d.ts +0 -11
  321. package/dist/esm/src/lib/event-bus/event-bus.d.ts.map +0 -1
  322. package/dist/esm/src/lib/event-bus/event-bus.js +0 -51
  323. package/dist/esm/src/lib/event-bus/event-bus.js.map +0 -1
  324. package/dist/esm/src/lib/event-bus/index.d.ts +0 -4
  325. package/dist/esm/src/lib/event-bus/index.d.ts.map +0 -1
  326. package/dist/esm/src/lib/event-bus/index.js +0 -4
  327. package/dist/esm/src/lib/event-bus/index.js.map +0 -1
  328. package/dist/esm/src/lib/event-bus/types/config.d.ts +0 -4
  329. package/dist/esm/src/lib/event-bus/types/config.d.ts.map +0 -1
  330. package/dist/esm/src/lib/event-bus/types/config.js +0 -2
  331. package/dist/esm/src/lib/event-bus/types/config.js.map +0 -1
  332. package/dist/esm/src/lib/event-bus/types/index.d.ts +0 -2
  333. package/dist/esm/src/lib/event-bus/types/index.d.ts.map +0 -1
  334. package/dist/esm/src/lib/event-bus/types/index.js +0 -2
  335. package/dist/esm/src/lib/event-bus/types/index.js.map +0 -1
@@ -1,104 +1,104 @@
1
- local EQueuePropertyQueueType = ARGV[1]
2
- local EQueuePropertyMessagesCount = ARGV[2]
3
- local EQueuePropertyQueueTypePriorityQueue = ARGV[3]
4
- local EQueuePropertyQueueTypeLIFOQueue = ARGV[4]
5
- local EQueuePropertyQueueTypeFIFOQueue = ARGV[5]
6
- local EMessagePropertyStatus = ARGV[6]
7
- local EMessagePropertyStatusProcessing = ARGV[7]
8
- local EMessagePropertyStatusAcknowledged = ARGV[8]
9
- local EMessagePropertyStatusPending = ARGV[9]
10
- local EMessagePropertyStatusScheduled = ARGV[10]
11
- local EMessagePropertyStatusDeadLettered = ARGV[11]
12
- local EMessagePropertyStatusUnackDelaying = ARGV[12]
13
- local EMessagePropertyStatusUnackRequeuing = ARGV[13]
1
+ local QUEUE_TYPE = ARGV[1]
2
+ local MSG_COUNT = ARGV[2]
3
+ local QUEUE_TYPE_PRIORITY = ARGV[3]
4
+ local QUEUE_TYPE_LIFO = ARGV[4]
5
+ local QUEUE_TYPE_FIFO = ARGV[5]
6
+ local MSG_STATUS = ARGV[6]
7
+ local MSG_STATUS_PROCESSING = ARGV[7]
8
+ local MSG_STATUS_ACKNOWLEDGED = ARGV[8]
9
+ local MSG_STATUS_PENDING = ARGV[9]
10
+ local MSG_STATUS_SCHEDULED = ARGV[10]
11
+ local MSG_STATUS_DEADLETTERED = ARGV[11]
12
+ local MSG_STATUS_UNACK_DELAYING = ARGV[12]
13
+ local MSG_STATUS_UNACK_REQUEUING = ARGV[13]
14
14
 
15
- ---
15
+ local STATUS_OK = 'OK'
16
+ local STATUS_MESSAGE_NOT_FOUND = 'MESSAGE_NOT_FOUND'
17
+ local STATUS_MESSAGE_IN_PROCESS = 'MESSAGE_IN_PROCESS'
18
+ local STATUS_INVALID_PARAMETERS = 'INVALID_PARAMETERS'
16
19
 
17
- local keyQueueScheduled = ''
18
- local keyQueueDelayed = ''
19
- local keyQueueRequeued = ''
20
- local keyMessage = ''
21
- local keyQueueProperties = ''
22
- local keyQueuePending = ''
23
- local keyQueueDL = ''
24
- local keyQueueAcknowledged = ''
25
- local keyQueuePriorityPending = ''
20
+ -- Counters for tracking results
21
+ local processedCount = 0
22
+ local successCount = 0
23
+ local notFoundCount = 0
24
+ local inProcessCount = 0
26
25
 
27
- ---
26
+ -- Constants for parameter counts
27
+ local INITIAL_KEY_OFFSET = 0
28
+ local INITIAL_ARGV_OFFSET = 13
29
+ local PARAMS_PER_MESSAGE = 1
30
+ local KEYS_PER_MESSAGE = 10
28
31
 
29
- local messageId = ''
32
+ -- Validate parameters
33
+ if #ARGV <= INITIAL_ARGV_OFFSET then
34
+ return 'INVALID_PARAMETERS'
35
+ end
30
36
 
31
- ---
37
+ --
38
+ local keyIndex = INITIAL_KEY_OFFSET + 1
32
39
 
33
- local keyIndexOffset = 0
34
- local argvIndexOffset = 13
40
+ for argvIndex = INITIAL_ARGV_OFFSET + 1, #ARGV, PARAMS_PER_MESSAGE do
41
+ local messageId = ARGV[argvIndex]
35
42
 
36
- ---
43
+ -- Setup direct key references for this message
44
+ local queueScheduled = KEYS[keyIndex]
45
+ local queueDelayed = KEYS[keyIndex + 1]
46
+ local queueRequeued = KEYS[keyIndex + 2]
47
+ local messageKey = KEYS[keyIndex + 3]
48
+ local queueProperties = KEYS[keyIndex + 4]
49
+ local queuePending = KEYS[keyIndex + 5]
50
+ local queueDL = KEYS[keyIndex + 6]
51
+ local queueAcknowledged = KEYS[keyIndex + 7]
52
+ local queuePriorityPending = KEYS[keyIndex + 8]
53
+ local queueMessages = KEYS[keyIndex + 9]
37
54
 
38
- local function updateQueue()
39
- redis.call("HINCRBY", keyQueueProperties, EQueuePropertyMessagesCount, -1)
40
- end
55
+ -- Update keyIndex for next iteration
56
+ keyIndex = keyIndex + KEYS_PER_MESSAGE
41
57
 
42
- local function deleteMessage()
43
- local messageStatus = redis.call("HGET", keyMessage, EMessagePropertyStatus)
58
+ --
59
+ processedCount = processedCount + 1
60
+
61
+ -- Check if message exists and get its status
62
+ local messageStatus = redis.call("HGET", messageKey, MSG_STATUS)
44
63
  if messageStatus == false then
45
- return 'MESSAGE_NOT_FOUND'
46
- end
47
- if messageStatus == EMessagePropertyStatusProcessing then
48
- return 'MESSAGE_IN_PROCESS'
49
- end
50
- local deleted = 0;
51
- if messageStatus == EMessagePropertyStatusAcknowledged then
52
- deleted = redis.call("LREM", keyQueueAcknowledged, 1, messageId)
53
- elseif messageStatus == EMessagePropertyStatusDeadLettered then
54
- deleted = redis.call("LREM", keyQueueDL, 1, messageId)
55
- elseif messageStatus == EMessagePropertyStatusScheduled then
56
- deleted = redis.call("ZREM", keyQueueScheduled, messageId)
57
- elseif messageStatus == EMessagePropertyStatusUnackDelaying then
58
- deleted = redis.call("LREM", keyQueueDelayed, 1, messageId)
59
- elseif messageStatus == EMessagePropertyStatusUnackRequeuing then
60
- deleted = redis.call("LREM", keyQueueRequeued, 1, messageId)
61
- elseif messageStatus == EMessagePropertyStatusPending then
62
- local queueType = redis.call("HGET", keyQueueProperties, EQueuePropertyQueueType)
63
- if queueType ~= false then
64
- if queueType == EQueuePropertyQueueTypePriorityQueue then
65
- deleted = redis.call("ZREM", keyQueuePriorityPending, messageId)
66
- end
67
- if queueType == EQueuePropertyQueueTypeFIFOQueue or queueType == EQueuePropertyQueueTypeLIFOQueue then
68
- deleted = redis.call("LREM", keyQueuePending, 1, messageId)
64
+ notFoundCount = notFoundCount + 1
65
+ elseif messageStatus == MSG_STATUS_PROCESSING then
66
+ inProcessCount = inProcessCount + 1
67
+ else
68
+ -- Remove from appropriate queue based on status
69
+ if messageStatus == MSG_STATUS_ACKNOWLEDGED then
70
+ redis.call("LREM", queueAcknowledged, 1, messageId)
71
+ elseif messageStatus == MSG_STATUS_DEADLETTERED then
72
+ redis.call("LREM", queueDL, 1, messageId)
73
+ elseif messageStatus == MSG_STATUS_SCHEDULED then
74
+ redis.call("ZREM", queueScheduled, messageId)
75
+ elseif messageStatus == MSG_STATUS_UNACK_DELAYING then
76
+ redis.call("LREM", queueDelayed, 1, messageId)
77
+ elseif messageStatus == MSG_STATUS_UNACK_REQUEUING then
78
+ redis.call("LREM", queueRequeued, 1, messageId)
79
+ elseif messageStatus == MSG_STATUS_PENDING then
80
+ local queueType = redis.call("HGET", queueProperties, QUEUE_TYPE)
81
+ if queueType then
82
+ if queueType == QUEUE_TYPE_PRIORITY then
83
+ redis.call("ZREM", queuePriorityPending, messageId)
84
+ elseif queueType == QUEUE_TYPE_FIFO or queueType == QUEUE_TYPE_LIFO then
85
+ redis.call("LREM", queuePending, 1, messageId)
86
+ end
69
87
  end
70
88
  end
71
- end
72
- if deleted == 1 then
73
- redis.call("DEL", keyMessage)
74
- return 'OK'
75
- end
76
- return 'MESSAGE_NOT_DELETED'
77
- end
78
89
 
79
- local deleteMessageStatus = 'INVALID_PARAMETERS'
90
+ -- Delete the message
91
+ redis.call("DEL", messageKey)
80
92
 
81
- if #ARGV > argvIndexOffset then
82
- for index in pairs(ARGV) do
83
- if (index > argvIndexOffset) then
84
- messageId = ARGV[index]
85
- keyQueueScheduled = KEYS[keyIndexOffset + 1]
86
- keyQueueDelayed = KEYS[keyIndexOffset + 2]
87
- keyQueueRequeued = KEYS[keyIndexOffset + 3]
88
- keyMessage = KEYS[keyIndexOffset + 4]
89
- keyQueueProperties = KEYS[keyIndexOffset + 5]
90
- keyQueuePending = KEYS[keyIndexOffset + 6]
91
- keyQueueDL = KEYS[keyIndexOffset + 7]
92
- keyQueueAcknowledged = KEYS[keyIndexOffset + 8]
93
- keyQueuePriorityPending = KEYS[keyIndexOffset + 9]
94
- keyIndexOffset = keyIndexOffset + 9
95
- deleteMessageStatus = deleteMessage()
96
- if deleteMessageStatus ~= 'OK' then
97
- break
98
- end
99
- updateQueue()
100
- end
93
+ -- Remove the message ID from queue messages
94
+ redis.call("SREM", queueMessages, messageId)
95
+
96
+ -- Decrements the message count in queue properties
97
+ redis.call("HINCRBY", queueProperties, MSG_COUNT, -1)
98
+
99
+ successCount = successCount + 1
101
100
  end
102
101
  end
103
102
 
104
- return deleteMessageStatus
103
+ -- Return an array with the results
104
+ return {processedCount, successCount, notFoundCount, inProcessCount}
@@ -5,8 +5,16 @@ local EMessagePropertyState = ARGV[2]
5
5
  local EMessagePropertyMessage = ARGV[3]
6
6
  local EMessagePropertyStatusProcessing = ARGV[4]
7
7
 
8
+ -- Fetch only the required fields in a single operation
8
9
  local result = redis.call("HMGET", keyMessage, EMessagePropertyState, EMessagePropertyMessage)
9
- if result[1] ~= false and result[2] ~= false then
10
- redis.call("HSET", keyMessage, EMessagePropertyStatus, EMessagePropertyStatusProcessing)
11
- return result
10
+
11
+ -- Early return if either field is missing
12
+ if result[1] == false or result[2] == false then
13
+ return false
12
14
  end
15
+
16
+ -- Update the message status to processing
17
+ redis.call("HSET", keyMessage, EMessagePropertyStatus, EMessagePropertyStatusProcessing)
18
+
19
+ -- Return the message data
20
+ return result
@@ -8,49 +8,46 @@ local EMessagePropertyStatus = ARGV[7]
8
8
  local EMessageUnacknowledgedCauseOfflineConsumer = ARGV[8]
9
9
  local EMessageUnacknowledgedCauseOfflineHandler = ARGV[9]
10
10
 
11
- ---
11
+ --
12
+ local INITIAL_KEY_OFFSET = 0
13
+ local INITIAL_ARGV_OFFSET = 9
14
+ local PARAMS_PER_MESSAGE = 7
15
+ local KEYS_PER_MESSAGE = 9
12
16
 
13
- local keyIndexOffset = 0
14
- local argvIndexOffset = 9
15
-
16
- ---
17
-
18
- local keyQueueProcessing = ''
19
- local keyQueueDelayed = ''
20
- local keyQueueRequeued = ''
21
- local keyQueueDL = ''
22
- local keyQueueProcessingQueues = ''
23
- local keyQueueConsumers = ''
24
- local keyConsumerQueues = ''
25
- local keyQueueProperties = ''
26
- local keyMessage = ''
17
+ --
18
+ if (#ARGV <= INITIAL_ARGV_OFFSET) then
19
+ return 'INVALID_PARAMETERS'
20
+ end
27
21
 
28
- local queue = ''
29
- local consumerId = ''
30
- local messageId = ''
31
- local retryAction = ''
32
- local messageDeadLetteredCause = ''
33
- local messageUnacknowledgedCause = ''
34
- local messageStatus = ''
22
+ --
23
+ local keyIndex = INITIAL_KEY_OFFSET + 1
35
24
 
36
- ---
25
+ --
26
+ for argvIndex = INITIAL_ARGV_OFFSET + 1, #ARGV, PARAMS_PER_MESSAGE do
27
+ -- Read all values for this group directly
28
+ local queue = ARGV[argvIndex]
29
+ local consumerId = ARGV[argvIndex + 1]
30
+ local messageId = ARGV[argvIndex + 2]
31
+ local retryAction = ARGV[argvIndex + 3]
32
+ local messageDeadLetteredCause = ARGV[argvIndex + 4]
33
+ local messageUnacknowledgedCause = ARGV[argvIndex + 5]
34
+ local messageStatus = ARGV[argvIndex + 6]
37
35
 
38
- local function updateMessageStatus()
39
- redis.call("HMSET", keyMessage, EMessagePropertyStatus, messageStatus)
40
- end
36
+ -- Get keys for this group directly
37
+ local keyQueueProcessing = KEYS[keyIndex]
38
+ local keyQueueDelayed = KEYS[keyIndex + 1]
39
+ local keyQueueRequeued = KEYS[keyIndex + 2]
40
+ local keyQueueDL = KEYS[keyIndex + 3]
41
+ local keyQueueProcessingQueues = KEYS[keyIndex + 4]
42
+ local keyQueueConsumers = KEYS[keyIndex + 5]
43
+ local keyConsumerQueues = KEYS[keyIndex + 6]
44
+ local keyQueueProperties = KEYS[keyIndex + 7]
45
+ local keyMessage = KEYS[keyIndex + 8]
41
46
 
42
- local function removeQueueConsumer()
43
- if queue ~= '' then
44
- redis.call("HDEL", keyQueueConsumers, consumerId)
45
- redis.call("SREM", keyConsumerQueues, queue)
46
- local size = redis.call("SCARD", keyConsumerQueues)
47
- if size == 0 then
48
- redis.call("DEL", keyConsumerQueues)
49
- end
50
- end
51
- end
47
+ -- Update keyIndex for next iteration
48
+ keyIndex = keyIndex + KEYS_PER_MESSAGE
52
49
 
53
- local function retryMessage()
50
+ -- Process message
54
51
  if messageId ~= '' then
55
52
  if retryAction == ERetryActionRequeue then
56
53
  redis.call("RPOPLPUSH", keyQueueProcessing, keyQueueRequeued)
@@ -64,63 +61,37 @@ local function retryMessage()
64
61
  redis.call("PEXPIRE", keyQueueDL, expireStoredMessages)
65
62
  end
66
63
  if storedMessagesSize ~= '0' then
64
+ -- storedMessagesSize should be negative for proper trimming (to keep newest messages)
67
65
  redis.call("LTRIM", keyQueueDL, storedMessagesSize, -1)
68
66
  end
69
67
  else
70
68
  redis.call("RPOP", keyQueueProcessing)
71
69
  end
72
70
  end
73
- updateMessageStatus();
74
- end
75
- end
76
71
 
77
- local function deleteProcessingQueue()
78
- if keyQueueProcessing ~= '' then
79
- redis.call("HDEL", keyQueueProcessingQueues, keyQueueProcessing)
80
- redis.call("DEL", keyQueueProcessing)
72
+ -- Update message status
73
+ redis.call("HSET", keyMessage, EMessagePropertyStatus, messageStatus)
81
74
  end
82
- end
83
75
 
84
- ---
76
+ -- Handle offline consumer/handler
77
+ if messageUnacknowledgedCause == EMessageUnacknowledgedCauseOfflineConsumer or
78
+ messageUnacknowledgedCause == EMessageUnacknowledgedCauseOfflineHandler then
79
+ -- Delete processing queue
80
+ if keyQueueProcessing ~= '' then
81
+ redis.call("HDEL", keyQueueProcessingQueues, keyQueueProcessing)
82
+ redis.call("DEL", keyQueueProcessing)
83
+ end
85
84
 
86
- if #ARGV > argvIndexOffset then
87
- for index in pairs(ARGV) do
88
- if (index > argvIndexOffset) then
89
- local relativeIndex = index % 7
90
- if relativeIndex == 3 then
91
- queue = ARGV[index]
92
- keyQueueProcessing = KEYS[keyIndexOffset + 1]
93
- keyQueueDelayed = KEYS[keyIndexOffset + 2];
94
- keyQueueRequeued = KEYS[keyIndexOffset + 3];
95
- keyQueueDL = KEYS[keyIndexOffset + 4]
96
- keyQueueProcessingQueues = KEYS[keyIndexOffset + 5]
97
- keyQueueConsumers = KEYS[keyIndexOffset + 6]
98
- keyConsumerQueues = KEYS[keyIndexOffset + 7]
99
- keyQueueProperties = KEYS[keyIndexOffset + 8]
100
- keyMessage = KEYS[keyIndexOffset + 9]
101
- keyIndexOffset = keyIndexOffset + 9
102
- elseif relativeIndex == 4 then
103
- consumerId = ARGV[index]
104
- elseif relativeIndex == 5 then
105
- messageId = ARGV[index]
106
- elseif relativeIndex == 6 then
107
- retryAction = ARGV[index]
108
- elseif relativeIndex == 0 then
109
- messageDeadLetteredCause = ARGV[index]
110
- elseif relativeIndex == 1 then
111
- messageUnacknowledgedCause = ARGV[index]
112
- elseif relativeIndex == 2 then
113
- messageStatus = ARGV[index]
114
- retryMessage()
115
- if messageUnacknowledgedCause == EMessageUnacknowledgedCauseOfflineConsumer or messageUnacknowledgedCause == EMessageUnacknowledgedCauseOfflineHandler then
116
- deleteProcessingQueue()
117
- removeQueueConsumer()
118
- end
85
+ -- Remove queue consumer
86
+ if queue ~= '' then
87
+ redis.call("HDEL", keyQueueConsumers, consumerId)
88
+ redis.call("SREM", keyConsumerQueues, queue)
89
+ local size = redis.call("SCARD", keyConsumerQueues)
90
+ if size == 0 then
91
+ redis.call("DEL", keyConsumerQueues)
119
92
  end
120
93
  end
121
94
  end
122
- return 'OK'
123
95
  end
124
96
 
125
- return 'INVALID_PARAMETERS'
126
-
97
+ return 'OK'
@@ -1,19 +1,26 @@
1
1
  local keyQueueRateLimitCounter = KEYS[1]
2
2
 
3
- ---
3
+ local rateLimitLimit = tonumber(ARGV[1])
4
+ local rateLimitExpire = tonumber(ARGV[2])
4
5
 
5
- local rateLimitLimit = ARGV[1]
6
- local rateLimitExpire = ARGV[2]
6
+ -- Get the current counter value
7
+ local count = redis.call("GET", keyQueueRateLimitCounter)
7
8
 
8
- local result = redis.call("GET", keyQueueRateLimitCounter)
9
- if result == false then
10
- redis.call("SET", keyQueueRateLimitCounter, rateLimitLimit)
11
- redis.call("PEXPIRE", keyQueueRateLimitCounter, rateLimitExpire);
9
+ -- If counter doesn't exist, initialize it
10
+ if count == false then
11
+ -- Use SET with EX option to combine SET and EXPIRE into one command
12
+ redis.call("SET", keyQueueRateLimitCounter, rateLimitLimit, "PX", rateLimitExpire)
12
13
  return 0
13
14
  end
14
- local count = tonumber(result)
15
+
16
+ -- Convert to number
17
+ count = tonumber(count)
18
+
19
+ -- Check if rate limit is exceeded
15
20
  if count <= 1 then
16
21
  return 1
17
22
  end
23
+
24
+ -- Decrement the counter
18
25
  redis.call("DECR", keyQueueRateLimitCounter)
19
26
  return 0
@@ -3,17 +3,21 @@ local keyQueueConsumers = KEYS[2]
3
3
  local keyConsumerQueues = KEYS[3]
4
4
  local keyQueueProcessingQueues = KEYS[4]
5
5
 
6
- ---
7
-
8
6
  local consumerId = ARGV[1]
9
7
  local consumerInfo = ARGV[2]
10
8
  local queue = ARGV[3]
11
9
  local consumerProcessingQueue = ARGV[4]
12
10
 
13
- if redis.call("SISMEMBER", keyQueues, queue) == 1 then
14
- redis.call("SADD", keyConsumerQueues, queue)
15
- redis.call("HSET", keyQueueConsumers, consumerId, consumerInfo)
16
- redis.call("HSET", keyQueueProcessingQueues, consumerProcessingQueue, consumerId)
17
- return 1
11
+ -- Early return if queue doesn't exist
12
+ if redis.call("SISMEMBER", keyQueues, queue) == 0 then
13
+ return 0
18
14
  end
19
- return 0
15
+
16
+ -- Execute all operations in sequence without conditional branching
17
+ redis.call("SADD", keyConsumerQueues, queue)
18
+
19
+ --
20
+ redis.call("HSET", keyQueueConsumers, consumerId, consumerInfo)
21
+ redis.call("HSET", keyQueueProcessingQueues, consumerProcessingQueue, consumerId)
22
+
23
+ return 1
@@ -4,8 +4,6 @@ local keyQueuePending = KEYS[3]
4
4
  local keyQueueMessages = KEYS[4]
5
5
  local keyMessage = KEYS[5]
6
6
 
7
- ---
8
-
9
7
  local EQueuePropertyQueueType = ARGV[1]
10
8
  local EQueuePropertyMessagesCount = ARGV[2]
11
9
  local EQueuePropertyQueueTypePriorityQueue = ARGV[3]
@@ -20,33 +18,28 @@ local messageState = ARGV[11]
20
18
  local EMessagePropertyMessage = ARGV[12]
21
19
  local message = ARGV[13]
22
20
 
23
- local queueProperties = redis.call("HMGET", keyQueueProperties, EQueuePropertyQueueType)
24
-
25
- local function saveMessage()
26
- redis.call("SADD", keyQueueMessages, messageId)
27
- redis.call(
28
- "HMSET", keyMessage,
29
- EMessagePropertyStatus, messageStatus,
30
- EMessagePropertyState, messageState,
31
- EMessagePropertyMessage, message
32
- )
33
- redis.call("HINCRBY", keyQueueProperties, EQueuePropertyMessagesCount, 1)
34
- end
21
+ -- Get queue type with a single field fetch
22
+ local queueType = redis.call("HGET", keyQueueProperties, EQueuePropertyQueueType)
35
23
 
36
- local queueType = queueProperties[1]
24
+ -- Early return if queue doesn't exist
37
25
  if queueType == false then
38
26
  return 'QUEUE_NOT_FOUND'
39
27
  end
40
28
 
29
+ -- Handle different queue types
41
30
  if queueType == EQueuePropertyQueueTypePriorityQueue then
31
+ -- Check if priority is provided for priority queue
42
32
  if messagePriority == nil or messagePriority == '' then
43
33
  return 'MESSAGE_PRIORITY_REQUIRED'
44
34
  end
45
35
  redis.call("ZADD", keyPriorityQueue, messagePriority, messageId)
46
36
  else
37
+ -- Check if priority is incorrectly provided for non-priority queue
47
38
  if not (messagePriority == nil or messagePriority == '') then
48
39
  return 'PRIORITY_QUEUING_NOT_ENABLED'
49
40
  end
41
+
42
+ -- Handle LIFO and FIFO queues
50
43
  if queueType == EQueuePropertyQueueTypeLIFOQueue then
51
44
  redis.call("RPUSH", keyQueuePending, messageId)
52
45
  elseif queueType == EQueuePropertyQueueTypeFIFOQueue then
@@ -56,6 +49,14 @@ else
56
49
  end
57
50
  end
58
51
 
59
- saveMessage()
60
- return 'OK'
61
-
52
+ -- Add message to queue and set its properties
53
+ redis.call("SADD", keyQueueMessages, messageId)
54
+ redis.call(
55
+ "HSET", keyMessage,
56
+ EMessagePropertyStatus, messageStatus,
57
+ EMessagePropertyState, messageState,
58
+ EMessagePropertyMessage, message
59
+ )
60
+ redis.call("HINCRBY", keyQueueProperties, EQueuePropertyMessagesCount, 1)
61
+
62
+ return 'OK'