UNPKG

redis-smq

Version:

A high-performance, reliable, and scalable message queue for Node.js.

63 lines 4.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MessageBrowserFactory = void 0; const redis_smq_common_1 = require("redis-smq-common"); const index_js_1 = require("../queue-manager/index.js"); const message_browser_js_1 = require("./message-browser/message-browser.js"); const index_js_2 = require("../message-manager/index.js"); const browser_storage_sorted_set_js_1 = require("./message-browser/browser-storage/browser-storage-sorted-set.js"); const browser_storage_list_js_1 = require("./message-browser/browser-storage/browser-storage-list.js"); const index_js_3 = require("./types/index.js"); const with_shared_pool_connection_js_1 = require("../common/redis/redis-connection-pool/with-shared-pool-connection.js"); const _get_queue_properties_js_1 = require("../queue-manager/_/_get-queue-properties.js"); class MessageBrowserFactory { static createPendingMessagesBrowser(queueType, messageType, logger) { const messageManager = new index_js_2.MessageManager(); switch (queueType) { case index_js_1.EQueueType.PRIORITY_QUEUE: return new message_browser_js_1.MessageBrowser(messageManager, new browser_storage_sorted_set_js_1.BrowserStorageSortedSet(logger), messageType, 'keyQueuePriority', true, logger); case index_js_1.EQueueType.LIFO_QUEUE: case index_js_1.EQueueType.FIFO_QUEUE: return new message_browser_js_1.MessageBrowser(messageManager, new browser_storage_list_js_1.BrowserStorageList(logger), messageType, 'keyQueuePending', true, logger); default: throw new Error(`Unsupported queue type: ${queueType}`); } } static createBrowserForQueueType(messageType, queueType, logger) { const messageManager = new index_js_2.MessageManager(); switch (messageType) { case index_js_3.EQueueMessageType.PUBLISHED: return new message_browser_js_1.MessageBrowser(messageManager, new browser_storage_list_js_1.BrowserStorageList(logger), messageType, 'keyQueuePublished', false, logger); case index_js_3.EQueueMessageType.SCHEDULED: return new message_browser_js_1.MessageBrowser(messageManager, new browser_storage_sorted_set_js_1.BrowserStorageSortedSet(logger), messageType, 'keyQueueScheduled', false, logger); case index_js_3.EQueueMessageType.PENDING: return this.createPendingMessagesBrowser(queueType, messageType, logger); case index_js_3.EQueueMessageType.ACKNOWLEDGED: return new message_browser_js_1.MessageBrowser(messageManager, new browser_storage_list_js_1.BrowserStorageList(logger), messageType, 'keyQueueAcknowledged', false, logger); case index_js_3.EQueueMessageType.DEAD_LETTERED: return new message_browser_js_1.MessageBrowser(messageManager, new browser_storage_list_js_1.BrowserStorageList(logger), messageType, 'keyQueueDeadLetter', false, logger); default: throw new Error(`Unsupported message type: ${messageType}`); } } static createBrowserForQueue(queue, messageType, logger, cb) { (0, with_shared_pool_connection_js_1.withSharedPoolConnection)((client, callback) => { (0, _get_queue_properties_js_1._getQueueProperties)(client, queue, (err, properties) => { if (err) return callback(err); if (!properties) return callback(new redis_smq_common_1.CallbackEmptyReplyError()); try { const browser = this.createBrowserForQueueType(messageType, properties.queueType, logger); callback(null, browser); } catch (error) { const err = error instanceof Error ? error : new Error(String(error)); callback(err); } }); }, cb); } } exports.MessageBrowserFactory = MessageBrowserFactory; //# sourceMappingURL=message-browser-factory.js.map