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
package/CHANGELOG.md CHANGED
@@ -3,6 +3,26 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [8.3.1](https://github.com/weyoss/redis-smq/compare/v8.3.0...v8.3.1) (2025-05-06)
7
+
8
+ ### ⚡ Performance Improvements
9
+
10
+ - **redis-smq:** optimize and clean up LUA scripts for better Redis performance ([1f8b128](https://github.com/weyoss/redis-smq/commit/1f8b128716e2686bd7d145efaef9b0c9a28daa65))
11
+
12
+ ## [8.3.0](https://github.com/weyoss/redis-smq/compare/v8.2.1...v8.3.0) (2025-05-04)
13
+
14
+ ### 🐛 Bug Fixes
15
+
16
+ - **redis-smq:** make message deletion more resilient to race conditions and inconsistent states ([3c07bae](https://github.com/weyoss/redis-smq/commit/3c07baee7df4e350d54d4c354d1f2604f8b773ae))
17
+
18
+ ### 📝 Documentation
19
+
20
+ - **redis-smq:** update class references ([d30542e](https://github.com/weyoss/redis-smq/commit/d30542e89faa2f511ff4fa0f2640446b0c591d89))
21
+
22
+ ### ♻️ Code Refactoring
23
+
24
+ - **redis-smq:** improve callback patterns and use new async utils ([8cff0d2](https://github.com/weyoss/redis-smq/commit/8cff0d2968561899c30156554aa89420c0fa8479))
25
+
6
26
  ## [8.2.1](https://github.com/weyoss/redis-smq/compare/v8.2.0...v8.2.1) (2025-04-22)
7
27
 
8
28
  ### 🐛 Bug Fixes
@@ -0,0 +1,6 @@
1
+ import { EventBusRedisFactory } from 'redis-smq-common';
2
+ import { TRedisSMQEvent } from '../types/index.js';
3
+ export declare class EventBus extends EventBusRedisFactory<TRedisSMQEvent> {
4
+ constructor();
5
+ }
6
+ //# sourceMappingURL=event-bus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../../../../src/common/event-bus/event-bus.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,qBAAa,QAAS,SAAQ,oBAAoB,CAAC,cAAc,CAAC;;CAKjE"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EventBus = void 0;
4
+ const redis_smq_common_1 = require("redis-smq-common");
5
+ const index_js_1 = require("../../config/index.js");
6
+ class EventBus extends redis_smq_common_1.EventBusRedisFactory {
7
+ constructor() {
8
+ const config = index_js_1.Configuration.getSetConfig();
9
+ super(config.redis);
10
+ }
11
+ }
12
+ exports.EventBus = EventBus;
13
+ //# sourceMappingURL=event-bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../../../../src/common/event-bus/event-bus.ts"],"names":[],"mappings":";;;AASA,uDAAwD;AACxD,oDAAsD;AAGtD,MAAa,QAAS,SAAQ,uCAAoC;IAChE;QACE,MAAM,MAAM,GAAG,wBAAa,CAAC,YAAY,EAAE,CAAC;QAC5C,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;CACF;AALD,4BAKC"}
@@ -1,2 +1,3 @@
1
1
  export * from './types/index.js';
2
+ export * from './event-bus/event-bus.js';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/common/index.ts"],"names":[],"mappings":"AASA,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/common/index.ts"],"names":[],"mappings":"AASA,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC"}
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./types/index.js"), exports);
18
+ __exportStar(require("./event-bus/event-bus.js"), exports);
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/common/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AASA,mDAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/common/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AASA,mDAAiC;AACjC,2DAAyC"}
@@ -1,11 +1,6 @@
1
- import { EventEmitter, ICallback, IRedisClient, IRedisConfig, TRedisClientEvent } from 'redis-smq-common';
2
- export declare class RedisClient extends EventEmitter<Pick<TRedisClientEvent, 'error'>> {
3
- protected instance: IRedisClient | null;
4
- protected locked: boolean;
5
- protected createClient(config: IRedisConfig, cb: ICallback<IRedisClient>): void;
6
- init: (cb: ICallback<void>) => void;
7
- getSetInstance: (cb: ICallback<IRedisClient>) => void;
8
- shutdown: (cb: ICallback<void>) => void;
9
- getInstance(): IRedisClient | Error;
1
+ import { ICallback, IRedisClient, IRedisConfig, RedisClientFactory } from 'redis-smq-common';
2
+ export declare class RedisClient extends RedisClientFactory {
3
+ constructor(cfg?: IRedisConfig);
4
+ protected setupClient(client: IRedisClient, cb: ICallback<IRedisClient>): void;
10
5
  }
11
6
  //# sourceMappingURL=redis-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"redis-client.d.ts","sourceRoot":"","sources":["../../../../../src/common/redis-client/redis-client.ts"],"names":[],"mappings":"AASA,OAAO,EAGL,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,YAAY,EAEZ,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAK1B,qBAAa,WAAY,SAAQ,YAAY,CAC3C,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,CACjC;IACC,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAQ;IAC/C,SAAS,CAAC,MAAM,UAAS;IAEzB,SAAS,CAAC,YAAY,CACpB,MAAM,EAAE,YAAY,EACpB,EAAE,EAAE,SAAS,CAAC,YAAY,CAAC,GAC1B,IAAI;IAWP,IAAI,OAAQ,SAAS,CAAC,IAAI,CAAC,KAAG,IAAI,CAEhC;IAEF,cAAc,OAAQ,SAAS,CAAC,YAAY,CAAC,KAAG,IAAI,CAclD;IAEF,QAAQ,OAAQ,SAAS,CAAC,IAAI,CAAC,KAAG,IAAI,CAOpC;IAEF,WAAW,IAAI,YAAY,GAAG,KAAK;CAOpC"}
1
+ {"version":3,"file":"redis-client.d.ts","sourceRoot":"","sources":["../../../../../src/common/redis-client/redis-client.ts"],"names":[],"mappings":"AASA,OAAO,EACL,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAI1B,qBAAa,WAAY,SAAQ,kBAAkB;gBACrC,GAAG,CAAC,EAAE,YAAY;cAKX,WAAW,CAC5B,MAAM,EAAE,YAAY,EACpB,EAAE,EAAE,SAAS,CAAC,YAAY,CAAC;CAO9B"}
@@ -3,66 +3,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RedisClient = void 0;
4
4
  const redis_smq_common_1 = require("redis-smq-common");
5
5
  const index_js_1 = require("../../config/index.js");
6
- const redis_client_instance_lock_error_js_1 = require("./errors/redis-client-instance-lock.error.js");
7
6
  const scripts_js_1 = require("./scripts/scripts.js");
8
- class RedisClient extends redis_smq_common_1.EventEmitter {
9
- constructor() {
10
- super(...arguments);
11
- this.instance = null;
12
- this.locked = false;
13
- this.init = (cb) => {
14
- this.getSetInstance((err) => cb(err));
15
- };
16
- this.getSetInstance = (cb) => {
17
- if (!this.locked) {
18
- if (!this.instance) {
19
- this.locked = true;
20
- this.createClient(index_js_1.Configuration.getSetConfig().redis, (err, client) => {
21
- this.locked = false;
22
- if (err)
23
- return cb(err);
24
- if (!client)
25
- return cb(new redis_smq_common_1.CallbackEmptyReplyError());
26
- this.instance = client;
27
- this.instance.on('error', (err) => this.emit('error', err));
28
- cb(null, this.instance);
29
- });
30
- }
31
- else
32
- cb(null, this.instance);
33
- }
34
- else
35
- cb(new redis_client_instance_lock_error_js_1.RedisClientInstanceLockError());
36
- };
37
- this.shutdown = (cb) => {
38
- if (this.instance) {
39
- this.instance.halt(() => {
40
- this.instance = null;
41
- cb();
42
- });
43
- }
44
- else
45
- cb();
46
- };
7
+ class RedisClient extends redis_smq_common_1.RedisClientFactory {
8
+ constructor(cfg) {
9
+ const config = cfg !== null && cfg !== void 0 ? cfg : index_js_1.Configuration.getSetConfig().redis;
10
+ super(config);
47
11
  }
48
- createClient(config, cb) {
49
- (0, redis_smq_common_1.createRedisClient)(config, (err, client) => {
12
+ setupClient(client, cb) {
13
+ client.loadScriptFiles(scripts_js_1.scriptFileMap, (err) => {
50
14
  if (err)
51
- return cb(err);
52
- if (!client)
53
- return cb(new redis_smq_common_1.CallbackEmptyReplyError());
54
- (0, scripts_js_1.loadScriptFiles)(client, (err) => {
55
- if (err)
56
- return cb(err);
57
- cb(null, client);
58
- });
15
+ cb(err);
16
+ cb(null, client);
59
17
  });
60
18
  }
61
- getInstance() {
62
- if (!this.instance)
63
- return new redis_smq_common_1.PanicError(`Use first getSetInstance() to initialize the RedisClientInstance class`);
64
- return this.instance;
65
- }
66
19
  }
67
20
  exports.RedisClient = RedisClient;
68
21
  //# sourceMappingURL=redis-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"redis-client.js","sourceRoot":"","sources":["../../../../../src/common/redis-client/redis-client.ts"],"names":[],"mappings":";;;AASA,uDAS0B;AAC1B,oDAAsD;AACtD,sGAA4F;AAC5F,qDAAuD;AAEvD,MAAa,WAAY,SAAQ,+BAEhC;IAFD;;QAGY,aAAQ,GAAwB,IAAI,CAAC;QACrC,WAAM,GAAG,KAAK,CAAC;QAgBzB,SAAI,GAAG,CAAC,EAAmB,EAAQ,EAAE;YACnC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC;QAEF,mBAAc,GAAG,CAAC,EAA2B,EAAQ,EAAE;YACrD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;oBACnB,IAAI,CAAC,YAAY,CAAC,wBAAa,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;wBACpE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;wBACpB,IAAI,GAAG;4BAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;wBACxB,IAAI,CAAC,MAAM;4BAAE,OAAO,EAAE,CAAC,IAAI,0CAAuB,EAAE,CAAC,CAAC;wBACtD,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;wBACvB,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;wBAC5D,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC1B,CAAC,CAAC,CAAC;gBACL,CAAC;;oBAAM,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjC,CAAC;;gBAAM,EAAE,CAAC,IAAI,kEAA4B,EAAE,CAAC,CAAC;QAChD,CAAC,CAAC;QAEF,aAAQ,GAAG,CAAC,EAAmB,EAAQ,EAAE;YACvC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE;oBACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACrB,EAAE,EAAE,CAAC;gBACP,CAAC,CAAC,CAAC;YACL,CAAC;;gBAAM,EAAE,EAAE,CAAC;QACd,CAAC,CAAC;IASJ,CAAC;IAlDW,YAAY,CACpB,MAAoB,EACpB,EAA2B;QAE3B,IAAA,oCAAiB,EAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YACxC,IAAI,GAAG;gBAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;YACxB,IAAI,CAAC,MAAM;gBAAE,OAAO,EAAE,CAAC,IAAI,0CAAuB,EAAE,CAAC,CAAC;YACtD,IAAA,4BAAe,EAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC9B,IAAI,GAAG;oBAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;gBACxB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACnB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IA+BD,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,QAAQ;YAChB,OAAO,IAAI,6BAAU,CACnB,wEAAwE,CACzE,CAAC;QACJ,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF;AAxDD,kCAwDC"}
1
+ {"version":3,"file":"redis-client.js","sourceRoot":"","sources":["../../../../../src/common/redis-client/redis-client.ts"],"names":[],"mappings":";;;AASA,uDAK0B;AAC1B,oDAAsD;AACtD,qDAAqD;AAErD,MAAa,WAAY,SAAQ,qCAAkB;IACjD,YAAY,GAAkB;QAC5B,MAAM,MAAM,GAAG,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,wBAAa,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC;QACzD,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAEkB,WAAW,CAC5B,MAAoB,EACpB,EAA2B;QAE3B,MAAM,CAAC,eAAe,CAAC,0BAAa,EAAE,CAAC,GAAG,EAAE,EAAE;YAC5C,IAAI,GAAG;gBAAE,EAAE,CAAC,GAAG,CAAC,CAAC;YACjB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAfD,kCAeC"}
@@ -2,27 +2,38 @@ local keyQueueProcessing = KEYS[1]
2
2
  local keyQueueAcknowledged = KEYS[2]
3
3
  local keyMessage = KEYS[3]
4
4
 
5
- ---
6
-
7
5
  local EMessagePropertyStatus = ARGV[1]
8
6
  local EMessagePropertyStatusAcknowledged = ARGV[2]
9
7
  local storeMessages = ARGV[3]
10
8
  local expireStoredMessages = ARGV[4]
11
9
  local storedMessagesSize = ARGV[5]
12
10
 
13
- local function updateMessageStatus()
14
- redis.call("HMSET", keyMessage, EMessagePropertyStatus, EMessagePropertyStatusAcknowledged)
11
+ -- Get the message ID from the processing queue
12
+ local messageId = redis.call("LPOP", keyQueueProcessing)
13
+
14
+ -- If no message was found, return early
15
+ if messageId == false then
16
+ return nil
15
17
  end
16
18
 
17
- local messageId = redis.call("LPOP", keyQueueProcessing)
19
+ -- Update message status immediately
20
+ redis.call("HSET", keyMessage, EMessagePropertyStatus, EMessagePropertyStatusAcknowledged)
21
+
22
+ -- Only perform storage operations if needed
18
23
  if storeMessages == '1' then
24
+ -- Add to acknowledged queue
19
25
  redis.call("RPUSH", keyQueueAcknowledged, messageId)
26
+
27
+ -- Apply expiration if configured
20
28
  if expireStoredMessages ~= '0' then
21
29
  redis.call("PEXPIRE", keyQueueAcknowledged, expireStoredMessages)
22
30
  end
31
+
32
+ -- Trim the queue if size limit is set
23
33
  if storedMessagesSize ~= '0' then
24
- local result = redis.call("LTRIM", keyQueueAcknowledged, storedMessagesSize, -1)
25
- return result
34
+ -- storedMessagesSize should be negative for proper trimming (to keep newest messages)
35
+ redis.call("LTRIM", keyQueueAcknowledged, storedMessagesSize, -1)
26
36
  end
27
37
  end
28
- updateMessageStatus()
38
+
39
+ return messageId
@@ -3,8 +3,6 @@ local keyNsQueues = KEYS[2]
3
3
  local keyQueues = KEYS[3]
4
4
  local keyQueueProperties = KEYS[4]
5
5
 
6
- ---
7
-
8
6
  local namespace = ARGV[1]
9
7
  local queue = ARGV[2]
10
8
  local queuePropertiesQueueType = ARGV[3]
@@ -12,12 +10,19 @@ local queueType = ARGV[4]
12
10
  local queuePropertiesQueueDeliveryModel = ARGV[5]
13
11
  local deliveryModel = ARGV[6]
14
12
 
15
- if redis.call("SISMEMBER", keyQueues, queue) == 0 then
16
- redis.call("SADD", keyQueues, queue)
17
- redis.call("SADD", keyNsQueues, queue)
18
- redis.call("SADD", keyNamespaces, namespace)
19
- redis.call("HSET", keyQueueProperties, queuePropertiesQueueType, queueType)
20
- redis.call("HSET", keyQueueProperties, queuePropertiesQueueDeliveryModel, deliveryModel)
21
- return 'OK'
13
+ -- Check if queue already exists
14
+ if redis.call("SISMEMBER", keyQueues, queue) == 1 then
15
+ return 'QUEUE_EXISTS'
22
16
  end
23
- return 'QUEUE_EXISTS'
17
+
18
+ --
19
+ redis.call("SADD", keyQueues, queue)
20
+ redis.call("SADD", keyNsQueues, queue)
21
+ redis.call("SADD", keyNamespaces, namespace)
22
+
23
+ --
24
+ redis.call("HSET", keyQueueProperties,
25
+ queuePropertiesQueueType, queueType,
26
+ queuePropertiesQueueDeliveryModel, deliveryModel)
27
+
28
+ return 'OK'
@@ -9,26 +9,37 @@ local typeLIFOQueue = ARGV[3]
9
9
  local typeFIFOQueue = ARGV[4]
10
10
  local groupId = ARGV[5]
11
11
 
12
+ -- Get queue type once and validate it exists
12
13
  local queueType = redis.call("HGET", keyQueueProperties, queuePropertiesQueueType)
13
14
  if queueType == false then
14
15
  return 'QUEUE_NOT_FOUND'
15
16
  end
16
17
 
17
- local count = 0;
18
+ -- Determine which key to check based on queue type (only once)
19
+ local pendingKey
18
20
  if queueType == typePriorityQueue then
19
- count = redis.call("ZCARD", keyQueuePendingPriority)
20
- elseif queueType == typeLIFOQueue or queueType == typeFIFOQueue then
21
- count = redis.call("LLEN", keyQueuePending)
21
+ pendingKey = keyQueuePendingPriority
22
+ else
23
+ pendingKey = keyQueuePending
22
24
  end
25
+
26
+ -- Check if the queue is empty using the appropriate command
27
+ local count = 0
28
+ if queueType == typePriorityQueue then
29
+ count = redis.call("ZCARD", pendingKey)
30
+ else
31
+ count = redis.call("LLEN", pendingKey)
32
+ end
33
+
34
+ -- Return early if the queue is not empty
23
35
  if count > 0 then
24
36
  return 'CONSUMER_GROUP_NOT_EMPTY'
25
37
  end
26
38
 
39
+ -- Remove the consumer group
27
40
  redis.call("SREM", keyQueueConsumerGroups, groupId)
28
- if queueType == typePriorityQueue then
29
- redis.call("DEL", keyQueuePendingPriority)
30
- elseif queueType == typeLIFOQueue or queueType == typeFIFOQueue then
31
- redis.call("DEL", keyQueuePending)
32
- end
41
+
42
+ -- Delete the pending queue
43
+ redis.call("DEL", pendingKey)
33
44
 
34
45
  return 'OK'
@@ -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