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
|
@@ -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
|
|
@@ -8,49 +8,46 @@ local EMessagePropertyStatus = ARGV[7]
|
|
|
8
8
|
local EMessageUnacknowledgedCauseOfflineConsumer = ARGV[8]
|
|
9
9
|
local EMessageUnacknowledgedCauseOfflineHandler = ARGV[9]
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
--
|
|
12
|
+
local INITIAL_KEY_OFFSET = 0
|
|
13
|
+
local INITIAL_ARGV_OFFSET = 9
|
|
14
|
+
local PARAMS_PER_MESSAGE = 7
|
|
15
|
+
local KEYS_PER_MESSAGE = 9
|
|
12
16
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
local keyQueueProcessing = ''
|
|
19
|
-
local keyQueueDelayed = ''
|
|
20
|
-
local keyQueueRequeued = ''
|
|
21
|
-
local keyQueueDL = ''
|
|
22
|
-
local keyQueueProcessingQueues = ''
|
|
23
|
-
local keyQueueConsumers = ''
|
|
24
|
-
local keyConsumerQueues = ''
|
|
25
|
-
local keyQueueProperties = ''
|
|
26
|
-
local keyMessage = ''
|
|
17
|
+
--
|
|
18
|
+
if (#ARGV <= INITIAL_ARGV_OFFSET) then
|
|
19
|
+
return 'INVALID_PARAMETERS'
|
|
20
|
+
end
|
|
27
21
|
|
|
28
|
-
|
|
29
|
-
local
|
|
30
|
-
local messageId = ''
|
|
31
|
-
local retryAction = ''
|
|
32
|
-
local messageDeadLetteredCause = ''
|
|
33
|
-
local messageUnacknowledgedCause = ''
|
|
34
|
-
local messageStatus = ''
|
|
22
|
+
--
|
|
23
|
+
local keyIndex = INITIAL_KEY_OFFSET + 1
|
|
35
24
|
|
|
36
|
-
|
|
25
|
+
--
|
|
26
|
+
for argvIndex = INITIAL_ARGV_OFFSET + 1, #ARGV, PARAMS_PER_MESSAGE do
|
|
27
|
+
-- Read all values for this group directly
|
|
28
|
+
local queue = ARGV[argvIndex]
|
|
29
|
+
local consumerId = ARGV[argvIndex + 1]
|
|
30
|
+
local messageId = ARGV[argvIndex + 2]
|
|
31
|
+
local retryAction = ARGV[argvIndex + 3]
|
|
32
|
+
local messageDeadLetteredCause = ARGV[argvIndex + 4]
|
|
33
|
+
local messageUnacknowledgedCause = ARGV[argvIndex + 5]
|
|
34
|
+
local messageStatus = ARGV[argvIndex + 6]
|
|
37
35
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
-- Get keys for this group directly
|
|
37
|
+
local keyQueueProcessing = KEYS[keyIndex]
|
|
38
|
+
local keyQueueDelayed = KEYS[keyIndex + 1]
|
|
39
|
+
local keyQueueRequeued = KEYS[keyIndex + 2]
|
|
40
|
+
local keyQueueDL = KEYS[keyIndex + 3]
|
|
41
|
+
local keyQueueProcessingQueues = KEYS[keyIndex + 4]
|
|
42
|
+
local keyQueueConsumers = KEYS[keyIndex + 5]
|
|
43
|
+
local keyConsumerQueues = KEYS[keyIndex + 6]
|
|
44
|
+
local keyQueueProperties = KEYS[keyIndex + 7]
|
|
45
|
+
local keyMessage = KEYS[keyIndex + 8]
|
|
41
46
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
redis.call("HDEL", keyQueueConsumers, consumerId)
|
|
45
|
-
redis.call("SREM", keyConsumerQueues, queue)
|
|
46
|
-
local size = redis.call("SCARD", keyConsumerQueues)
|
|
47
|
-
if size == 0 then
|
|
48
|
-
redis.call("DEL", keyConsumerQueues)
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
47
|
+
-- Update keyIndex for next iteration
|
|
48
|
+
keyIndex = keyIndex + KEYS_PER_MESSAGE
|
|
52
49
|
|
|
53
|
-
|
|
50
|
+
-- Process message
|
|
54
51
|
if messageId ~= '' then
|
|
55
52
|
if retryAction == ERetryActionRequeue then
|
|
56
53
|
redis.call("RPOPLPUSH", keyQueueProcessing, keyQueueRequeued)
|
|
@@ -64,63 +61,37 @@ local function retryMessage()
|
|
|
64
61
|
redis.call("PEXPIRE", keyQueueDL, expireStoredMessages)
|
|
65
62
|
end
|
|
66
63
|
if storedMessagesSize ~= '0' then
|
|
64
|
+
-- storedMessagesSize should be negative for proper trimming (to keep newest messages)
|
|
67
65
|
redis.call("LTRIM", keyQueueDL, storedMessagesSize, -1)
|
|
68
66
|
end
|
|
69
67
|
else
|
|
70
68
|
redis.call("RPOP", keyQueueProcessing)
|
|
71
69
|
end
|
|
72
70
|
end
|
|
73
|
-
updateMessageStatus();
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
71
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
redis.call("HDEL", keyQueueProcessingQueues, keyQueueProcessing)
|
|
80
|
-
redis.call("DEL", keyQueueProcessing)
|
|
72
|
+
-- Update message status
|
|
73
|
+
redis.call("HSET", keyMessage, EMessagePropertyStatus, messageStatus)
|
|
81
74
|
end
|
|
82
|
-
end
|
|
83
75
|
|
|
84
|
-
|
|
76
|
+
-- Handle offline consumer/handler
|
|
77
|
+
if messageUnacknowledgedCause == EMessageUnacknowledgedCauseOfflineConsumer or
|
|
78
|
+
messageUnacknowledgedCause == EMessageUnacknowledgedCauseOfflineHandler then
|
|
79
|
+
-- Delete processing queue
|
|
80
|
+
if keyQueueProcessing ~= '' then
|
|
81
|
+
redis.call("HDEL", keyQueueProcessingQueues, keyQueueProcessing)
|
|
82
|
+
redis.call("DEL", keyQueueProcessing)
|
|
83
|
+
end
|
|
85
84
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
keyQueueDelayed = KEYS[keyIndexOffset + 2];
|
|
94
|
-
keyQueueRequeued = KEYS[keyIndexOffset + 3];
|
|
95
|
-
keyQueueDL = KEYS[keyIndexOffset + 4]
|
|
96
|
-
keyQueueProcessingQueues = KEYS[keyIndexOffset + 5]
|
|
97
|
-
keyQueueConsumers = KEYS[keyIndexOffset + 6]
|
|
98
|
-
keyConsumerQueues = KEYS[keyIndexOffset + 7]
|
|
99
|
-
keyQueueProperties = KEYS[keyIndexOffset + 8]
|
|
100
|
-
keyMessage = KEYS[keyIndexOffset + 9]
|
|
101
|
-
keyIndexOffset = keyIndexOffset + 9
|
|
102
|
-
elseif relativeIndex == 4 then
|
|
103
|
-
consumerId = ARGV[index]
|
|
104
|
-
elseif relativeIndex == 5 then
|
|
105
|
-
messageId = ARGV[index]
|
|
106
|
-
elseif relativeIndex == 6 then
|
|
107
|
-
retryAction = ARGV[index]
|
|
108
|
-
elseif relativeIndex == 0 then
|
|
109
|
-
messageDeadLetteredCause = ARGV[index]
|
|
110
|
-
elseif relativeIndex == 1 then
|
|
111
|
-
messageUnacknowledgedCause = ARGV[index]
|
|
112
|
-
elseif relativeIndex == 2 then
|
|
113
|
-
messageStatus = ARGV[index]
|
|
114
|
-
retryMessage()
|
|
115
|
-
if messageUnacknowledgedCause == EMessageUnacknowledgedCauseOfflineConsumer or messageUnacknowledgedCause == EMessageUnacknowledgedCauseOfflineHandler then
|
|
116
|
-
deleteProcessingQueue()
|
|
117
|
-
removeQueueConsumer()
|
|
118
|
-
end
|
|
85
|
+
-- Remove queue consumer
|
|
86
|
+
if queue ~= '' then
|
|
87
|
+
redis.call("HDEL", keyQueueConsumers, consumerId)
|
|
88
|
+
redis.call("SREM", keyConsumerQueues, queue)
|
|
89
|
+
local size = redis.call("SCARD", keyConsumerQueues)
|
|
90
|
+
if size == 0 then
|
|
91
|
+
redis.call("DEL", keyConsumerQueues)
|
|
119
92
|
end
|
|
120
93
|
end
|
|
121
94
|
end
|
|
122
|
-
return 'OK'
|
|
123
95
|
end
|
|
124
96
|
|
|
125
|
-
return '
|
|
126
|
-
|
|
97
|
+
return 'OK'
|
|
@@ -1,19 +1,26 @@
|
|
|
1
1
|
local keyQueueRateLimitCounter = KEYS[1]
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
local rateLimitLimit = tonumber(ARGV[1])
|
|
4
|
+
local rateLimitExpire = tonumber(ARGV[2])
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
local
|
|
6
|
+
-- Get the current counter value
|
|
7
|
+
local count = redis.call("GET", keyQueueRateLimitCounter)
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
if
|
|
10
|
-
|
|
11
|
-
redis.call("
|
|
9
|
+
-- If counter doesn't exist, initialize it
|
|
10
|
+
if count == false then
|
|
11
|
+
-- Use SET with EX option to combine SET and EXPIRE into one command
|
|
12
|
+
redis.call("SET", keyQueueRateLimitCounter, rateLimitLimit, "PX", rateLimitExpire)
|
|
12
13
|
return 0
|
|
13
14
|
end
|
|
14
|
-
|
|
15
|
+
|
|
16
|
+
-- Convert to number
|
|
17
|
+
count = tonumber(count)
|
|
18
|
+
|
|
19
|
+
-- Check if rate limit is exceeded
|
|
15
20
|
if count <= 1 then
|
|
16
21
|
return 1
|
|
17
22
|
end
|
|
23
|
+
|
|
24
|
+
-- Decrement the counter
|
|
18
25
|
redis.call("DECR", keyQueueRateLimitCounter)
|
|
19
26
|
return 0
|
|
@@ -3,17 +3,21 @@ local keyQueueConsumers = KEYS[2]
|
|
|
3
3
|
local keyConsumerQueues = KEYS[3]
|
|
4
4
|
local keyQueueProcessingQueues = KEYS[4]
|
|
5
5
|
|
|
6
|
-
---
|
|
7
|
-
|
|
8
6
|
local consumerId = ARGV[1]
|
|
9
7
|
local consumerInfo = ARGV[2]
|
|
10
8
|
local queue = ARGV[3]
|
|
11
9
|
local consumerProcessingQueue = ARGV[4]
|
|
12
10
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
redis.call("HSET", keyQueueProcessingQueues, consumerProcessingQueue, consumerId)
|
|
17
|
-
return 1
|
|
11
|
+
-- Early return if queue doesn't exist
|
|
12
|
+
if redis.call("SISMEMBER", keyQueues, queue) == 0 then
|
|
13
|
+
return 0
|
|
18
14
|
end
|
|
19
|
-
|
|
15
|
+
|
|
16
|
+
-- Execute all operations in sequence without conditional branching
|
|
17
|
+
redis.call("SADD", keyConsumerQueues, queue)
|
|
18
|
+
|
|
19
|
+
--
|
|
20
|
+
redis.call("HSET", keyQueueConsumers, consumerId, consumerInfo)
|
|
21
|
+
redis.call("HSET", keyQueueProcessingQueues, consumerProcessingQueue, consumerId)
|
|
22
|
+
|
|
23
|
+
return 1
|
|
@@ -4,8 +4,6 @@ local keyQueuePending = KEYS[3]
|
|
|
4
4
|
local keyQueueMessages = KEYS[4]
|
|
5
5
|
local keyMessage = KEYS[5]
|
|
6
6
|
|
|
7
|
-
---
|
|
8
|
-
|
|
9
7
|
local EQueuePropertyQueueType = ARGV[1]
|
|
10
8
|
local EQueuePropertyMessagesCount = ARGV[2]
|
|
11
9
|
local EQueuePropertyQueueTypePriorityQueue = ARGV[3]
|
|
@@ -20,33 +18,28 @@ local messageState = ARGV[11]
|
|
|
20
18
|
local EMessagePropertyMessage = ARGV[12]
|
|
21
19
|
local message = ARGV[13]
|
|
22
20
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
local function saveMessage()
|
|
26
|
-
redis.call("SADD", keyQueueMessages, messageId)
|
|
27
|
-
redis.call(
|
|
28
|
-
"HMSET", keyMessage,
|
|
29
|
-
EMessagePropertyStatus, messageStatus,
|
|
30
|
-
EMessagePropertyState, messageState,
|
|
31
|
-
EMessagePropertyMessage, message
|
|
32
|
-
)
|
|
33
|
-
redis.call("HINCRBY", keyQueueProperties, EQueuePropertyMessagesCount, 1)
|
|
34
|
-
end
|
|
21
|
+
-- Get queue type with a single field fetch
|
|
22
|
+
local queueType = redis.call("HGET", keyQueueProperties, EQueuePropertyQueueType)
|
|
35
23
|
|
|
36
|
-
|
|
24
|
+
-- Early return if queue doesn't exist
|
|
37
25
|
if queueType == false then
|
|
38
26
|
return 'QUEUE_NOT_FOUND'
|
|
39
27
|
end
|
|
40
28
|
|
|
29
|
+
-- Handle different queue types
|
|
41
30
|
if queueType == EQueuePropertyQueueTypePriorityQueue then
|
|
31
|
+
-- Check if priority is provided for priority queue
|
|
42
32
|
if messagePriority == nil or messagePriority == '' then
|
|
43
33
|
return 'MESSAGE_PRIORITY_REQUIRED'
|
|
44
34
|
end
|
|
45
35
|
redis.call("ZADD", keyPriorityQueue, messagePriority, messageId)
|
|
46
36
|
else
|
|
37
|
+
-- Check if priority is incorrectly provided for non-priority queue
|
|
47
38
|
if not (messagePriority == nil or messagePriority == '') then
|
|
48
39
|
return 'PRIORITY_QUEUING_NOT_ENABLED'
|
|
49
40
|
end
|
|
41
|
+
|
|
42
|
+
-- Handle LIFO and FIFO queues
|
|
50
43
|
if queueType == EQueuePropertyQueueTypeLIFOQueue then
|
|
51
44
|
redis.call("RPUSH", keyQueuePending, messageId)
|
|
52
45
|
elseif queueType == EQueuePropertyQueueTypeFIFOQueue then
|
|
@@ -56,6 +49,14 @@ else
|
|
|
56
49
|
end
|
|
57
50
|
end
|
|
58
51
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
52
|
+
-- Add message to queue and set its properties
|
|
53
|
+
redis.call("SADD", keyQueueMessages, messageId)
|
|
54
|
+
redis.call(
|
|
55
|
+
"HSET", keyMessage,
|
|
56
|
+
EMessagePropertyStatus, messageStatus,
|
|
57
|
+
EMessagePropertyState, messageState,
|
|
58
|
+
EMessagePropertyMessage, message
|
|
59
|
+
)
|
|
60
|
+
redis.call("HINCRBY", keyQueueProperties, EQueuePropertyMessagesCount, 1)
|
|
61
|
+
|
|
62
|
+
return 'OK'
|