redis-smq
Version:
A high-performance, reliable, and scalable message queue for Node.js.
33 lines • 1.43 kB
JavaScript
import { MessageEnvelope } from '../../message/message-envelope.js';
import { EMessageProperty, ProducibleMessage, } from '../../message/index.js';
import { _parseMessageState } from './_parse-message-state.js';
function arrayToRecord(rawData) {
const record = {};
for (let i = 0; i < rawData.length; i += 2) {
const key = rawData[i];
const value = rawData[i + 1];
if (key !== undefined && value !== undefined) {
record[key] = value;
}
}
return record;
}
export function _parseMessage(rawData) {
const normalizedData = Array.isArray(rawData)
? arrayToRecord(rawData)
: rawData;
const messageJSON = JSON.parse(normalizedData[EMessageProperty.MESSAGE]);
const { consumerGroupId, destinationQueue, ...message } = messageJSON;
const messagePub = new ProducibleMessage();
Object.assign(messagePub, message);
delete normalizedData[EMessageProperty.MESSAGE];
const status = Number(normalizedData[EMessageProperty.STATUS]);
delete normalizedData[EMessageProperty.STATUS];
const messageState = _parseMessageState(normalizedData);
const messageEnvelope = new MessageEnvelope(messagePub, messageState, status);
messageEnvelope.setDestinationQueue(destinationQueue);
if (consumerGroupId)
messageEnvelope.setConsumerGroupId(consumerGroupId);
return messageEnvelope;
}
//# sourceMappingURL=_parse-message.js.map