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.
- package/CHANGELOG.md +20 -0
- package/dist/cjs/src/common/event-bus/event-bus.d.ts +6 -0
- package/dist/cjs/src/common/event-bus/event-bus.d.ts.map +1 -0
- package/dist/cjs/src/common/event-bus/event-bus.js +13 -0
- package/dist/cjs/src/common/event-bus/event-bus.js.map +1 -0
- package/dist/cjs/src/common/index.d.ts +1 -0
- package/dist/cjs/src/common/index.d.ts.map +1 -1
- package/dist/cjs/src/common/index.js +1 -0
- package/dist/cjs/src/common/index.js.map +1 -1
- package/dist/cjs/src/common/redis-client/redis-client.d.ts +4 -9
- package/dist/cjs/src/common/redis-client/redis-client.d.ts.map +1 -1
- package/dist/cjs/src/common/redis-client/redis-client.js +8 -55
- package/dist/cjs/src/common/redis-client/redis-client.js.map +1 -1
- package/dist/cjs/src/common/redis-client/scripts/lua/acknowledge-message.lua +19 -8
- package/dist/cjs/src/common/redis-client/scripts/lua/create-queue.lua +15 -10
- package/dist/cjs/src/common/redis-client/scripts/lua/delete-consumer-group.lua +20 -9
- package/dist/cjs/src/common/redis-client/scripts/lua/delete-message.lua +87 -87
- package/dist/cjs/src/common/redis-client/scripts/lua/fetch-message-for-processing.lua +11 -3
- package/dist/cjs/src/common/redis-client/scripts/lua/handle-processing-queue.lua +53 -82
- package/dist/cjs/src/common/redis-client/scripts/lua/has-queue-rate-exceeded.lua +15 -8
- package/dist/cjs/src/common/redis-client/scripts/lua/init-consumer-queue.lua +12 -8
- package/dist/cjs/src/common/redis-client/scripts/lua/publish-message.lua +19 -18
- package/dist/cjs/src/common/redis-client/scripts/lua/publish-scheduled-message.lua +89 -119
- package/dist/cjs/src/common/redis-client/scripts/lua/requeue-message.lua +54 -53
- package/dist/cjs/src/common/redis-client/scripts/lua/schedule-message.lua +47 -76
- package/dist/cjs/src/common/redis-client/scripts/lua/set-queue-rate-limit.lua +4 -5
- package/dist/cjs/src/common/redis-client/scripts/scripts.d.ts +15 -3
- package/dist/cjs/src/common/redis-client/scripts/scripts.d.ts.map +1 -1
- package/dist/cjs/src/common/redis-client/scripts/scripts.js +2 -8
- package/dist/cjs/src/common/redis-client/scripts/scripts.js.map +1 -1
- package/dist/cjs/src/config/types/config.d.ts +4 -1
- package/dist/cjs/src/config/types/config.d.ts.map +1 -1
- package/dist/cjs/src/lib/consumer/consumer/consumer.d.ts +4 -5
- package/dist/cjs/src/lib/consumer/consumer/consumer.d.ts.map +1 -1
- package/dist/cjs/src/lib/consumer/consumer/consumer.js +6 -24
- package/dist/cjs/src/lib/consumer/consumer/consumer.js.map +1 -1
- package/dist/cjs/src/lib/consumer/consumer/event-bus-publisher.d.ts +1 -1
- package/dist/cjs/src/lib/consumer/consumer/event-bus-publisher.d.ts.map +1 -1
- package/dist/cjs/src/lib/consumer/consumer-heartbeat/consumer-heartbeat.d.ts +1 -1
- package/dist/cjs/src/lib/consumer/consumer-heartbeat/consumer-heartbeat.d.ts.map +1 -1
- package/dist/cjs/src/lib/consumer/consumer-heartbeat/consumer-heartbeat.js.map +1 -1
- package/dist/cjs/src/lib/consumer/consumer-heartbeat/event-bus-publisher.d.ts +1 -1
- package/dist/cjs/src/lib/consumer/consumer-heartbeat/event-bus-publisher.d.ts.map +1 -1
- package/dist/cjs/src/lib/consumer/message-handler/message-handler/consume-message/consume-message.d.ts +1 -1
- package/dist/cjs/src/lib/consumer/message-handler/message-handler/consume-message/consume-message.d.ts.map +1 -1
- package/dist/cjs/src/lib/consumer/message-handler/message-handler/consume-message/consume-message.js +25 -33
- package/dist/cjs/src/lib/consumer/message-handler/message-handler/consume-message/consume-message.js.map +1 -1
- package/dist/cjs/src/lib/consumer/message-handler/message-handler/consume-message/event-bus-publisher.d.ts +1 -1
- package/dist/cjs/src/lib/consumer/message-handler/message-handler/consume-message/event-bus-publisher.d.ts.map +1 -1
- package/dist/cjs/src/lib/consumer/message-handler/message-handler/consume-message/message-unacknowledgement.d.ts.map +1 -1
- package/dist/cjs/src/lib/consumer/message-handler/message-handler/consume-message/message-unacknowledgement.js +35 -51
- package/dist/cjs/src/lib/consumer/message-handler/message-handler/consume-message/message-unacknowledgement.js.map +1 -1
- package/dist/cjs/src/lib/consumer/message-handler/message-handler/consume-message/processing-queue.d.ts.map +1 -1
- package/dist/cjs/src/lib/consumer/message-handler/message-handler/consume-message/processing-queue.js +4 -10
- package/dist/cjs/src/lib/consumer/message-handler/message-handler/consume-message/processing-queue.js.map +1 -1
- package/dist/cjs/src/lib/consumer/message-handler/message-handler/dequeue-message/dequeue-message.d.ts +1 -1
- package/dist/cjs/src/lib/consumer/message-handler/message-handler/dequeue-message/dequeue-message.d.ts.map +1 -1
- package/dist/cjs/src/lib/consumer/message-handler/message-handler/dequeue-message/dequeue-message.js +12 -12
- package/dist/cjs/src/lib/consumer/message-handler/message-handler/dequeue-message/dequeue-message.js.map +1 -1
- package/dist/cjs/src/lib/consumer/message-handler/message-handler/dequeue-message/event-bus-publisher.d.ts +1 -1
- package/dist/cjs/src/lib/consumer/message-handler/message-handler/dequeue-message/event-bus-publisher.d.ts.map +1 -1
- package/dist/cjs/src/lib/consumer/message-handler/message-handler/even-bus-publisher.d.ts +1 -1
- package/dist/cjs/src/lib/consumer/message-handler/message-handler/even-bus-publisher.d.ts.map +1 -1
- package/dist/cjs/src/lib/consumer/message-handler/message-handler/message-handler.d.ts +1 -1
- package/dist/cjs/src/lib/consumer/message-handler/message-handler/multiplexed-message-handler.d.ts +1 -1
- package/dist/cjs/src/lib/consumer/message-handler/message-handler/multiplexed-message-handler.d.ts.map +1 -1
- package/dist/cjs/src/lib/consumer/message-handler-runner/event-bus-publisher.d.ts +1 -1
- package/dist/cjs/src/lib/consumer/message-handler-runner/event-bus-publisher.d.ts.map +1 -1
- package/dist/cjs/src/lib/consumer/message-handler-runner/message-handler-runner.d.ts +1 -1
- package/dist/cjs/src/lib/consumer/message-handler-runner/message-handler-runner.d.ts.map +1 -1
- package/dist/cjs/src/lib/consumer/message-handler-runner/multiplexed-message-handler-runner.d.ts +1 -1
- package/dist/cjs/src/lib/consumer/message-handler-runner/multiplexed-message-handler-runner.d.ts.map +1 -1
- package/dist/cjs/src/lib/consumer-groups/_/_save-consumer-group.js +1 -1
- package/dist/cjs/src/lib/consumer-groups/_/_save-consumer-group.js.map +1 -1
- package/dist/cjs/src/lib/consumer-groups/consumer-groups.d.ts +1 -1
- package/dist/cjs/src/lib/consumer-groups/consumer-groups.d.ts.map +1 -1
- package/dist/cjs/src/lib/consumer-groups/consumer-groups.js +25 -86
- package/dist/cjs/src/lib/consumer-groups/consumer-groups.js.map +1 -1
- package/dist/cjs/src/lib/exchange/exchange-fan-out/exchange-fan-out.d.ts.map +1 -1
- package/dist/cjs/src/lib/exchange/exchange-fan-out/exchange-fan-out.js +16 -72
- package/dist/cjs/src/lib/exchange/exchange-fan-out/exchange-fan-out.js.map +1 -1
- package/dist/cjs/src/lib/exchange/exchange-topic/exchange-topic.d.ts.map +1 -1
- package/dist/cjs/src/lib/exchange/exchange-topic/exchange-topic.js +10 -24
- package/dist/cjs/src/lib/exchange/exchange-topic/exchange-topic.js.map +1 -1
- package/dist/cjs/src/lib/index.d.ts +0 -1
- package/dist/cjs/src/lib/index.d.ts.map +1 -1
- package/dist/cjs/src/lib/index.js +0 -1
- package/dist/cjs/src/lib/index.js.map +1 -1
- package/dist/cjs/src/lib/message/_/_delete-message.d.ts +2 -1
- package/dist/cjs/src/lib/message/_/_delete-message.d.ts.map +1 -1
- package/dist/cjs/src/lib/message/_/_delete-message.js +47 -28
- package/dist/cjs/src/lib/message/_/_delete-message.js.map +1 -1
- package/dist/cjs/src/lib/message/message.d.ts +3 -3
- package/dist/cjs/src/lib/message/message.d.ts.map +1 -1
- package/dist/cjs/src/lib/message/message.js +103 -174
- package/dist/cjs/src/lib/message/message.js.map +1 -1
- package/dist/cjs/src/lib/message/types/delete-message.d.ts +12 -0
- package/dist/cjs/src/lib/message/types/delete-message.d.ts.map +1 -0
- package/dist/cjs/src/lib/{event-bus/types/config.js → message/types/delete-message.js} +1 -1
- package/dist/cjs/src/lib/message/types/delete-message.js.map +1 -0
- package/dist/cjs/src/lib/message/types/index.d.ts +1 -0
- package/dist/cjs/src/lib/message/types/index.d.ts.map +1 -1
- package/dist/cjs/src/lib/message/types/index.js +1 -0
- package/dist/cjs/src/lib/message/types/index.js.map +1 -1
- package/dist/cjs/src/lib/namespace/namespace.d.ts.map +1 -1
- package/dist/cjs/src/lib/namespace/namespace.js +10 -38
- package/dist/cjs/src/lib/namespace/namespace.js.map +1 -1
- package/dist/cjs/src/lib/producer/event-bus-publisher.d.ts +1 -1
- package/dist/cjs/src/lib/producer/event-bus-publisher.d.ts.map +1 -1
- package/dist/cjs/src/lib/producer/producer.d.ts +4 -5
- package/dist/cjs/src/lib/producer/producer.d.ts.map +1 -1
- package/dist/cjs/src/lib/producer/producer.js +1 -23
- package/dist/cjs/src/lib/producer/producer.js.map +1 -1
- package/dist/cjs/src/lib/producer/queue-consumer-groups-cache.d.ts +1 -1
- package/dist/cjs/src/lib/producer/queue-consumer-groups-cache.d.ts.map +1 -1
- package/dist/cjs/src/lib/queue/_/_delete-queue.js +1 -1
- package/dist/cjs/src/lib/queue/_/_delete-queue.js.map +1 -1
- package/dist/cjs/src/lib/queue/queue.d.ts +1 -1
- package/dist/cjs/src/lib/queue/queue.d.ts.map +1 -1
- package/dist/cjs/src/lib/queue/queue.js +90 -194
- package/dist/cjs/src/lib/queue/queue.js.map +1 -1
- package/dist/cjs/src/lib/queue-messages/queue-messages/queue-messages.d.ts.map +1 -1
- package/dist/cjs/src/lib/queue-messages/queue-messages/queue-messages.js +3 -11
- package/dist/cjs/src/lib/queue-messages/queue-messages/queue-messages.js.map +1 -1
- package/dist/cjs/src/lib/queue-messages/queue-messages/queue-pending-messages/queue-pending-messages.d.ts.map +1 -1
- package/dist/cjs/src/lib/queue-messages/queue-messages/queue-pending-messages/queue-pending-messages.js +9 -17
- package/dist/cjs/src/lib/queue-messages/queue-messages/queue-pending-messages/queue-pending-messages.js.map +1 -1
- package/dist/cjs/src/lib/queue-messages/queue-messages-manager/queue-messages-manager-abstract.d.ts.map +1 -1
- package/dist/cjs/src/lib/queue-messages/queue-messages-manager/queue-messages-manager-abstract.js +11 -43
- package/dist/cjs/src/lib/queue-messages/queue-messages-manager/queue-messages-manager-abstract.js.map +1 -1
- package/dist/cjs/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-list.d.ts.map +1 -1
- package/dist/cjs/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-list.js +6 -30
- package/dist/cjs/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-list.js.map +1 -1
- package/dist/cjs/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-set.d.ts.map +1 -1
- package/dist/cjs/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-set.js +10 -50
- package/dist/cjs/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-set.js.map +1 -1
- package/dist/cjs/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-sorted-set.d.ts.map +1 -1
- package/dist/cjs/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-sorted-set.js +8 -40
- package/dist/cjs/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-sorted-set.js.map +1 -1
- package/dist/cjs/src/lib/queue-rate-limit/queue-rate-limit.d.ts.map +1 -1
- package/dist/cjs/src/lib/queue-rate-limit/queue-rate-limit.js +16 -72
- package/dist/cjs/src/lib/queue-rate-limit/queue-rate-limit.js.map +1 -1
- package/dist/esm/src/common/event-bus/event-bus.d.ts +6 -0
- package/dist/esm/src/common/event-bus/event-bus.d.ts.map +1 -0
- package/dist/esm/src/common/event-bus/event-bus.js +9 -0
- package/dist/esm/src/common/event-bus/event-bus.js.map +1 -0
- package/dist/esm/src/common/index.d.ts +1 -0
- package/dist/esm/src/common/index.d.ts.map +1 -1
- package/dist/esm/src/common/index.js +1 -0
- package/dist/esm/src/common/index.js.map +1 -1
- package/dist/esm/src/common/redis-client/redis-client.d.ts +4 -9
- package/dist/esm/src/common/redis-client/redis-client.d.ts.map +1 -1
- package/dist/esm/src/common/redis-client/redis-client.js +11 -55
- package/dist/esm/src/common/redis-client/redis-client.js.map +1 -1
- package/dist/esm/src/common/redis-client/scripts/lua/acknowledge-message.lua +19 -8
- package/dist/esm/src/common/redis-client/scripts/lua/create-queue.lua +15 -10
- package/dist/esm/src/common/redis-client/scripts/lua/delete-consumer-group.lua +20 -9
- package/dist/esm/src/common/redis-client/scripts/lua/delete-message.lua +87 -87
- package/dist/esm/src/common/redis-client/scripts/lua/fetch-message-for-processing.lua +11 -3
- package/dist/esm/src/common/redis-client/scripts/lua/handle-processing-queue.lua +53 -82
- package/dist/esm/src/common/redis-client/scripts/lua/has-queue-rate-exceeded.lua +15 -8
- package/dist/esm/src/common/redis-client/scripts/lua/init-consumer-queue.lua +12 -8
- package/dist/esm/src/common/redis-client/scripts/lua/publish-message.lua +19 -18
- package/dist/esm/src/common/redis-client/scripts/lua/publish-scheduled-message.lua +89 -119
- package/dist/esm/src/common/redis-client/scripts/lua/requeue-message.lua +54 -53
- package/dist/esm/src/common/redis-client/scripts/lua/schedule-message.lua +47 -76
- package/dist/esm/src/common/redis-client/scripts/lua/set-queue-rate-limit.lua +4 -5
- package/dist/esm/src/common/redis-client/scripts/scripts.d.ts +15 -3
- package/dist/esm/src/common/redis-client/scripts/scripts.d.ts.map +1 -1
- package/dist/esm/src/common/redis-client/scripts/scripts.js +1 -6
- package/dist/esm/src/common/redis-client/scripts/scripts.js.map +1 -1
- package/dist/esm/src/config/types/config.d.ts +4 -1
- package/dist/esm/src/config/types/config.d.ts.map +1 -1
- package/dist/esm/src/lib/consumer/consumer/consumer.d.ts +4 -5
- package/dist/esm/src/lib/consumer/consumer/consumer.d.ts.map +1 -1
- package/dist/esm/src/lib/consumer/consumer/consumer.js +3 -21
- package/dist/esm/src/lib/consumer/consumer/consumer.js.map +1 -1
- package/dist/esm/src/lib/consumer/consumer/event-bus-publisher.d.ts +1 -1
- package/dist/esm/src/lib/consumer/consumer/event-bus-publisher.d.ts.map +1 -1
- package/dist/esm/src/lib/consumer/consumer-heartbeat/consumer-heartbeat.d.ts +1 -1
- package/dist/esm/src/lib/consumer/consumer-heartbeat/consumer-heartbeat.d.ts.map +1 -1
- package/dist/esm/src/lib/consumer/consumer-heartbeat/consumer-heartbeat.js.map +1 -1
- package/dist/esm/src/lib/consumer/consumer-heartbeat/event-bus-publisher.d.ts +1 -1
- package/dist/esm/src/lib/consumer/consumer-heartbeat/event-bus-publisher.d.ts.map +1 -1
- package/dist/esm/src/lib/consumer/message-handler/message-handler/consume-message/consume-message.d.ts +1 -1
- package/dist/esm/src/lib/consumer/message-handler/message-handler/consume-message/consume-message.d.ts.map +1 -1
- package/dist/esm/src/lib/consumer/message-handler/message-handler/consume-message/consume-message.js +26 -34
- package/dist/esm/src/lib/consumer/message-handler/message-handler/consume-message/consume-message.js.map +1 -1
- package/dist/esm/src/lib/consumer/message-handler/message-handler/consume-message/event-bus-publisher.d.ts +1 -1
- package/dist/esm/src/lib/consumer/message-handler/message-handler/consume-message/event-bus-publisher.d.ts.map +1 -1
- package/dist/esm/src/lib/consumer/message-handler/message-handler/consume-message/message-unacknowledgement.d.ts.map +1 -1
- package/dist/esm/src/lib/consumer/message-handler/message-handler/consume-message/message-unacknowledgement.js +36 -52
- package/dist/esm/src/lib/consumer/message-handler/message-handler/consume-message/message-unacknowledgement.js.map +1 -1
- package/dist/esm/src/lib/consumer/message-handler/message-handler/consume-message/processing-queue.d.ts.map +1 -1
- package/dist/esm/src/lib/consumer/message-handler/message-handler/consume-message/processing-queue.js +5 -11
- package/dist/esm/src/lib/consumer/message-handler/message-handler/consume-message/processing-queue.js.map +1 -1
- package/dist/esm/src/lib/consumer/message-handler/message-handler/dequeue-message/dequeue-message.d.ts +1 -1
- package/dist/esm/src/lib/consumer/message-handler/message-handler/dequeue-message/dequeue-message.d.ts.map +1 -1
- package/dist/esm/src/lib/consumer/message-handler/message-handler/dequeue-message/dequeue-message.js +1 -1
- package/dist/esm/src/lib/consumer/message-handler/message-handler/dequeue-message/dequeue-message.js.map +1 -1
- package/dist/esm/src/lib/consumer/message-handler/message-handler/dequeue-message/event-bus-publisher.d.ts +1 -1
- package/dist/esm/src/lib/consumer/message-handler/message-handler/dequeue-message/event-bus-publisher.d.ts.map +1 -1
- package/dist/esm/src/lib/consumer/message-handler/message-handler/even-bus-publisher.d.ts +1 -1
- package/dist/esm/src/lib/consumer/message-handler/message-handler/even-bus-publisher.d.ts.map +1 -1
- package/dist/esm/src/lib/consumer/message-handler/message-handler/message-handler.d.ts +1 -1
- package/dist/esm/src/lib/consumer/message-handler/message-handler/multiplexed-message-handler.d.ts +1 -1
- package/dist/esm/src/lib/consumer/message-handler/message-handler/multiplexed-message-handler.d.ts.map +1 -1
- package/dist/esm/src/lib/consumer/message-handler-runner/event-bus-publisher.d.ts +1 -1
- package/dist/esm/src/lib/consumer/message-handler-runner/event-bus-publisher.d.ts.map +1 -1
- package/dist/esm/src/lib/consumer/message-handler-runner/message-handler-runner.d.ts +1 -1
- package/dist/esm/src/lib/consumer/message-handler-runner/message-handler-runner.d.ts.map +1 -1
- package/dist/esm/src/lib/consumer/message-handler-runner/multiplexed-message-handler-runner.d.ts +1 -1
- package/dist/esm/src/lib/consumer/message-handler-runner/multiplexed-message-handler-runner.d.ts.map +1 -1
- package/dist/esm/src/lib/consumer-groups/_/_save-consumer-group.js +1 -1
- package/dist/esm/src/lib/consumer-groups/_/_save-consumer-group.js.map +1 -1
- package/dist/esm/src/lib/consumer-groups/consumer-groups.d.ts +1 -1
- package/dist/esm/src/lib/consumer-groups/consumer-groups.d.ts.map +1 -1
- package/dist/esm/src/lib/consumer-groups/consumer-groups.js +23 -84
- package/dist/esm/src/lib/consumer-groups/consumer-groups.js.map +1 -1
- package/dist/esm/src/lib/exchange/exchange-fan-out/exchange-fan-out.d.ts.map +1 -1
- package/dist/esm/src/lib/exchange/exchange-fan-out/exchange-fan-out.js +17 -73
- package/dist/esm/src/lib/exchange/exchange-fan-out/exchange-fan-out.js.map +1 -1
- package/dist/esm/src/lib/exchange/exchange-topic/exchange-topic.d.ts.map +1 -1
- package/dist/esm/src/lib/exchange/exchange-topic/exchange-topic.js +11 -25
- package/dist/esm/src/lib/exchange/exchange-topic/exchange-topic.js.map +1 -1
- package/dist/esm/src/lib/index.d.ts +0 -1
- package/dist/esm/src/lib/index.d.ts.map +1 -1
- package/dist/esm/src/lib/index.js +0 -1
- package/dist/esm/src/lib/index.js.map +1 -1
- package/dist/esm/src/lib/message/_/_delete-message.d.ts +2 -1
- package/dist/esm/src/lib/message/_/_delete-message.d.ts.map +1 -1
- package/dist/esm/src/lib/message/_/_delete-message.js +50 -31
- package/dist/esm/src/lib/message/_/_delete-message.js.map +1 -1
- package/dist/esm/src/lib/message/message.d.ts +3 -3
- package/dist/esm/src/lib/message/message.d.ts.map +1 -1
- package/dist/esm/src/lib/message/message.js +104 -175
- package/dist/esm/src/lib/message/message.js.map +1 -1
- package/dist/esm/src/lib/message/types/delete-message.d.ts +12 -0
- package/dist/esm/src/lib/message/types/delete-message.d.ts.map +1 -0
- package/dist/esm/src/lib/message/types/delete-message.js +2 -0
- package/dist/esm/src/lib/message/types/delete-message.js.map +1 -0
- package/dist/esm/src/lib/message/types/index.d.ts +1 -0
- package/dist/esm/src/lib/message/types/index.d.ts.map +1 -1
- package/dist/esm/src/lib/message/types/index.js +1 -0
- package/dist/esm/src/lib/message/types/index.js.map +1 -1
- package/dist/esm/src/lib/namespace/namespace.d.ts.map +1 -1
- package/dist/esm/src/lib/namespace/namespace.js +11 -39
- package/dist/esm/src/lib/namespace/namespace.js.map +1 -1
- package/dist/esm/src/lib/producer/event-bus-publisher.d.ts +1 -1
- package/dist/esm/src/lib/producer/event-bus-publisher.d.ts.map +1 -1
- package/dist/esm/src/lib/producer/producer.d.ts +4 -5
- package/dist/esm/src/lib/producer/producer.d.ts.map +1 -1
- package/dist/esm/src/lib/producer/producer.js +2 -24
- package/dist/esm/src/lib/producer/producer.js.map +1 -1
- package/dist/esm/src/lib/producer/queue-consumer-groups-cache.d.ts +1 -1
- package/dist/esm/src/lib/producer/queue-consumer-groups-cache.d.ts.map +1 -1
- package/dist/esm/src/lib/queue/_/_delete-queue.js +1 -1
- package/dist/esm/src/lib/queue/_/_delete-queue.js.map +1 -1
- package/dist/esm/src/lib/queue/queue.d.ts +1 -1
- package/dist/esm/src/lib/queue/queue.d.ts.map +1 -1
- package/dist/esm/src/lib/queue/queue.js +88 -192
- package/dist/esm/src/lib/queue/queue.js.map +1 -1
- package/dist/esm/src/lib/queue-messages/queue-messages/queue-messages.d.ts.map +1 -1
- package/dist/esm/src/lib/queue-messages/queue-messages/queue-messages.js +4 -12
- package/dist/esm/src/lib/queue-messages/queue-messages/queue-messages.js.map +1 -1
- package/dist/esm/src/lib/queue-messages/queue-messages/queue-pending-messages/queue-pending-messages.d.ts.map +1 -1
- package/dist/esm/src/lib/queue-messages/queue-messages/queue-pending-messages/queue-pending-messages.js +10 -18
- package/dist/esm/src/lib/queue-messages/queue-messages/queue-pending-messages/queue-pending-messages.js.map +1 -1
- package/dist/esm/src/lib/queue-messages/queue-messages-manager/queue-messages-manager-abstract.d.ts.map +1 -1
- package/dist/esm/src/lib/queue-messages/queue-messages-manager/queue-messages-manager-abstract.js +12 -44
- package/dist/esm/src/lib/queue-messages/queue-messages-manager/queue-messages-manager-abstract.js.map +1 -1
- package/dist/esm/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-list.d.ts.map +1 -1
- package/dist/esm/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-list.js +7 -31
- package/dist/esm/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-list.js.map +1 -1
- package/dist/esm/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-set.d.ts.map +1 -1
- package/dist/esm/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-set.js +11 -51
- package/dist/esm/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-set.js.map +1 -1
- package/dist/esm/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-sorted-set.d.ts.map +1 -1
- package/dist/esm/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-sorted-set.js +9 -41
- package/dist/esm/src/lib/queue-messages/queue-messages-storage/queue-messages-storage-sorted-set.js.map +1 -1
- package/dist/esm/src/lib/queue-rate-limit/queue-rate-limit.d.ts.map +1 -1
- package/dist/esm/src/lib/queue-rate-limit/queue-rate-limit.js +17 -73
- package/dist/esm/src/lib/queue-rate-limit/queue-rate-limit.js.map +1 -1
- package/package.json +2 -2
- package/dist/cjs/src/common/redis-client/scripts/lua/cleanup-offline-consumer.lua +0 -33
- package/dist/cjs/src/common/redis-client/scripts/lua/delete-queue-messages.lua +0 -21
- package/dist/cjs/src/lib/event-bus/errors/event-bus-instance-lock.error.d.ts +0 -4
- package/dist/cjs/src/lib/event-bus/errors/event-bus-instance-lock.error.d.ts.map +0 -1
- package/dist/cjs/src/lib/event-bus/errors/event-bus-instance-lock.error.js +0 -8
- package/dist/cjs/src/lib/event-bus/errors/event-bus-instance-lock.error.js.map +0 -1
- package/dist/cjs/src/lib/event-bus/errors/index.d.ts +0 -2
- package/dist/cjs/src/lib/event-bus/errors/index.d.ts.map +0 -1
- package/dist/cjs/src/lib/event-bus/errors/index.js +0 -6
- package/dist/cjs/src/lib/event-bus/errors/index.js.map +0 -1
- package/dist/cjs/src/lib/event-bus/event-bus.d.ts +0 -11
- package/dist/cjs/src/lib/event-bus/event-bus.d.ts.map +0 -1
- package/dist/cjs/src/lib/event-bus/event-bus.js +0 -58
- package/dist/cjs/src/lib/event-bus/event-bus.js.map +0 -1
- package/dist/cjs/src/lib/event-bus/index.d.ts +0 -4
- package/dist/cjs/src/lib/event-bus/index.d.ts.map +0 -1
- package/dist/cjs/src/lib/event-bus/index.js +0 -20
- package/dist/cjs/src/lib/event-bus/index.js.map +0 -1
- package/dist/cjs/src/lib/event-bus/types/config.d.ts +0 -4
- package/dist/cjs/src/lib/event-bus/types/config.d.ts.map +0 -1
- package/dist/cjs/src/lib/event-bus/types/config.js.map +0 -1
- package/dist/cjs/src/lib/event-bus/types/index.d.ts +0 -2
- package/dist/cjs/src/lib/event-bus/types/index.d.ts.map +0 -1
- package/dist/cjs/src/lib/event-bus/types/index.js +0 -18
- package/dist/cjs/src/lib/event-bus/types/index.js.map +0 -1
- package/dist/esm/src/common/redis-client/scripts/lua/cleanup-offline-consumer.lua +0 -33
- package/dist/esm/src/common/redis-client/scripts/lua/delete-queue-messages.lua +0 -21
- package/dist/esm/src/lib/event-bus/errors/event-bus-instance-lock.error.d.ts +0 -4
- package/dist/esm/src/lib/event-bus/errors/event-bus-instance-lock.error.d.ts.map +0 -1
- package/dist/esm/src/lib/event-bus/errors/event-bus-instance-lock.error.js +0 -4
- package/dist/esm/src/lib/event-bus/errors/event-bus-instance-lock.error.js.map +0 -1
- package/dist/esm/src/lib/event-bus/errors/index.d.ts +0 -2
- package/dist/esm/src/lib/event-bus/errors/index.d.ts.map +0 -1
- package/dist/esm/src/lib/event-bus/errors/index.js +0 -2
- package/dist/esm/src/lib/event-bus/errors/index.js.map +0 -1
- package/dist/esm/src/lib/event-bus/event-bus.d.ts +0 -11
- package/dist/esm/src/lib/event-bus/event-bus.d.ts.map +0 -1
- package/dist/esm/src/lib/event-bus/event-bus.js +0 -51
- package/dist/esm/src/lib/event-bus/event-bus.js.map +0 -1
- package/dist/esm/src/lib/event-bus/index.d.ts +0 -4
- package/dist/esm/src/lib/event-bus/index.d.ts.map +0 -1
- package/dist/esm/src/lib/event-bus/index.js +0 -4
- package/dist/esm/src/lib/event-bus/index.js.map +0 -1
- package/dist/esm/src/lib/event-bus/types/config.d.ts +0 -4
- package/dist/esm/src/lib/event-bus/types/config.d.ts.map +0 -1
- package/dist/esm/src/lib/event-bus/types/config.js +0 -2
- package/dist/esm/src/lib/event-bus/types/config.js.map +0 -1
- package/dist/esm/src/lib/event-bus/types/index.d.ts +0 -2
- package/dist/esm/src/lib/event-bus/types/index.d.ts.map +0 -1
- package/dist/esm/src/lib/event-bus/types/index.js +0 -2
- 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 @@
|
|
|
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 +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 {
|
|
2
|
-
export declare class RedisClient extends
|
|
3
|
-
|
|
4
|
-
protected
|
|
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,
|
|
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.
|
|
9
|
-
constructor() {
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
49
|
-
(
|
|
12
|
+
setupClient(client, cb) {
|
|
13
|
+
client.loadScriptFiles(scripts_js_1.scriptFileMap, (err) => {
|
|
50
14
|
if (err)
|
|
51
|
-
|
|
52
|
-
|
|
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,
|
|
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
|
-
|
|
14
|
-
|
|
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
|
-
|
|
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
|
-
|
|
25
|
-
|
|
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
|
-
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
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
|
-
|
|
18
|
+
-- Determine which key to check based on queue type (only once)
|
|
19
|
+
local pendingKey
|
|
18
20
|
if queueType == typePriorityQueue then
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
|
2
|
-
local
|
|
3
|
-
local
|
|
4
|
-
local
|
|
5
|
-
local
|
|
6
|
-
local
|
|
7
|
-
local
|
|
8
|
-
local
|
|
9
|
-
local
|
|
10
|
-
local
|
|
11
|
-
local
|
|
12
|
-
local
|
|
13
|
-
local
|
|
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
|
-
|
|
18
|
-
local
|
|
19
|
-
local
|
|
20
|
-
local
|
|
21
|
-
local
|
|
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
|
-
|
|
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
|
-
|
|
34
|
-
local
|
|
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
|
-
|
|
39
|
-
|
|
40
|
-
end
|
|
55
|
+
-- Update keyIndex for next iteration
|
|
56
|
+
keyIndex = keyIndex + KEYS_PER_MESSAGE
|
|
41
57
|
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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
|
-
|
|
90
|
+
-- Delete the message
|
|
91
|
+
redis.call("DEL", messageKey)
|
|
80
92
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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
|
-
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|