@cumulus/message
Version:
Utilities for building and parsing Cumulus messages
68 lines • 2.28 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.hasQueueAndExecutionLimit = exports.getMaximumExecutions = exports.getQueueUrl = void 0;
/**
* Utility functions for parsing queue information from a Cumulus message
* @module Queue
*
* @example
* const Queue = require('@cumulus/message/Queue');
*/
const isNil_1 = __importDefault(require("lodash/isNil"));
/**
* Get the queue URL from a workflow message.
*
* @param {MessageWithQueueInfo} message - A workflow message object
* @returns {string} A queue URL
*
* @alias module:Queue
*/
const getQueueUrl = (message) => {
const queueUrl = message.cumulus_meta.queueUrl;
if ((0, isNil_1.default)(queueUrl)) {
throw new Error('Could not find queue URL at cumulus_meta.queueUrl in message');
}
return queueUrl;
};
exports.getQueueUrl = getQueueUrl;
/**
* Get the maximum executions for a queue.
*
* @param {Message.CumulusMessage} message - A workflow message object
* @param {string} queueUrl - A queue URL
* @returns {number} Count of the maximum executions for the queue
* @throws {Error} if no maximum executions can be found
*
* @alias module:Queue
*/
const getMaximumExecutions = (message, queueUrl) => {
const maxExecutions = message.cumulus_meta.queueExecutionLimits?.[queueUrl];
if ((0, isNil_1.default)(maxExecutions)) {
throw new Error(`Could not determine maximum executions for queue ${queueUrl}`);
}
return maxExecutions;
};
exports.getMaximumExecutions = getMaximumExecutions;
/**
* Determine if there is a queue and queue execution limit in the message.
*
* @param {MessageWithQueueInfo} message - A workflow message object
* @returns {boolean} True if there is a queue and execution limit.
*
* @alias module:Queue
*/
const hasQueueAndExecutionLimit = (message) => {
try {
const queueUrl = (0, exports.getQueueUrl)(message);
(0, exports.getMaximumExecutions)(message, queueUrl);
}
catch (error) {
return false;
}
return true;
};
exports.hasQueueAndExecutionLimit = hasQueueAndExecutionLimit;
//# sourceMappingURL=Queue.js.map
;