UNPKG

rocketmq-client-nodejs

Version:
214 lines 12.3 kB
"use strict"; /** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.MessageView = void 0; const node_zlib_1 = require("node:zlib"); const definition_pb_1 = require("../../proto/apache/rocketmq/v2/definition_pb"); const util_1 = require("../util"); class MessageView { messageId; topic; body; corrupted; transportDeliveryTimestamp; tag; messageGroup; deliveryTimestamp; keys; bornHost; bornTimestamp; deliveryAttempt; endpoints; receiptHandle; offset; decodeTimestamp; properties = new Map(); liteTopic; priority; constructor(message, messageQueue, transportDeliveryTimestamp) { const systemProperties = message.getSystemProperties(); const bodyDigest = systemProperties.getBodyDigest().toObject(); const digestType = bodyDigest.type; const checksum = bodyDigest.checksum; let expectedChecksum = ''; let bodyBytes = Buffer.from(message.getBody_asU8()); switch (digestType) { case definition_pb_1.DigestType.CRC32: expectedChecksum = (0, util_1.crc32CheckSum)(bodyBytes); break; case definition_pb_1.DigestType.MD5: expectedChecksum = (0, util_1.md5CheckSum)(bodyBytes); break; case definition_pb_1.DigestType.SHA1: expectedChecksum = (0, util_1.sha1CheckSum)(bodyBytes); break; default: // log.error("Unsupported message body digest algorithm, digestType={}, topic={}, messageId={}", // digestType, topic, messageId); } if (expectedChecksum && expectedChecksum !== checksum) { this.corrupted = true; } if (systemProperties.getBodyEncoding() === definition_pb_1.Encoding.GZIP) { bodyBytes = (0, node_zlib_1.gunzipSync)(bodyBytes); } for (const [key, value] of message.getUserPropertiesMap().entries()) { this.properties.set(key, value); } this.messageId = systemProperties.getMessageId(); this.topic = message.getTopic().getName(); this.tag = systemProperties.getTag(); this.messageGroup = systemProperties.getMessageGroup(); this.deliveryTimestamp = systemProperties.getDeliveryTimestamp()?.toDate(); this.keys = systemProperties.getKeysList(); this.bornHost = systemProperties.getBornHost(); this.bornTimestamp = systemProperties.getBornTimestamp()?.toDate(); this.deliveryAttempt = systemProperties.getDeliveryAttempt(); this.offset = systemProperties.getQueueOffset(); this.receiptHandle = systemProperties.getReceiptHandle(); this.transportDeliveryTimestamp = transportDeliveryTimestamp; this.liteTopic = systemProperties.getLiteTopic(); this.priority = systemProperties.getPriority(); if (messageQueue) { this.endpoints = messageQueue.broker.endpoints; } this.body = bodyBytes; } /** * Get the lite topic, which makes sense only when the topic type is LITE. * * @return lite topic, which is optional, undefined means lite topic is not specified. */ getLiteTopic() { return this.liteTopic; } /** * Get the priority of the message, which makes sense only when topic type is priority. * * @return message priority, which is optional, undefined means priority is not specified. */ getPriority() { return this.priority; } /** * Get the unique id of the message. * * @return unique id. */ getMessageId() { return this.messageId; } /** * Get the topic of the message, which is the first classifier for the message. * * @return topic of the message. */ getTopic() { return this.topic; } /** * Get the deep copy of the message body, which means any modification of the return value does not * affect the built-in message body. * * @return the deep copy of message body. */ getBody() { return Buffer.from(this.body); } /** * Get the deep copy of message properties, which makes the modifies of return value does * not affect the message itself. * * @return the deep copy of message properties. */ getProperties() { return new Map(this.properties); } /** * Get the tag of the message, which is the second classifier besides the topic. * * @return the tag of message, which is optional, undefined means tag does not exist. */ getTag() { return this.tag; } /** * Get the key collection of the message, which means any modification of the return value does not affect the * built-in message key collection. * * @return copy of the key collection of the message, empty array means message key is not specified. */ getKeys() { return [...this.keys]; } /** * Get the message group, which makes sense only when the topic type is FIFO(First In, First Out). * * @return message group, which is optional, undefined means message group is not specified. */ getMessageGroup() { return this.messageGroup; } /** * Get the expected delivery timestamp, which makes sense only when the topic type is delay. * * @return message expected delivery timestamp, which is optional, undefined means delivery timestamp is not specified. */ getDeliveryTimestamp() { return this.deliveryTimestamp; } /** * Get the born host of the message. * * @return born host of the message. */ getBornHost() { return this.bornHost; } /** * Get the born timestamp of the message. * * <p>Born time means the timestamp that the message is prepared to send rather than the timestamp the * Message was built. * * @return born timestamp of the message. */ getBornTimestamp() { return this.bornTimestamp; } /** * Get the delivery attempt for the message. * * @return delivery attempt. */ getDeliveryAttempt() { return this.deliveryAttempt; } /** * Increment the delivery attempt and return the new value. * Used by FIFO retry logic to track redelivery attempts. * * @return the incremented delivery attempt */ incrementAndGetDeliveryAttempt() { this.deliveryAttempt = (this.deliveryAttempt ?? 0) + 1; return this.deliveryAttempt; } } exports.MessageView = MessageView; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVzc2FnZVZpZXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWVzc2FnZS9NZXNzYWdlVmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHOzs7QUFFSCx5Q0FBdUM7QUFDdkMsZ0ZBSXNEO0FBQ3RELGtDQUFtRTtBQUduRSxNQUFhLFdBQVc7SUFDYixTQUFTLENBQVM7SUFDbEIsS0FBSyxDQUFTO0lBQ2QsSUFBSSxDQUFTO0lBQ2IsU0FBUyxDQUFVO0lBQ25CLDBCQUEwQixDQUFRO0lBQ2xDLEdBQUcsQ0FBVTtJQUNiLFlBQVksQ0FBVTtJQUN0QixpQkFBaUIsQ0FBUTtJQUN6QixJQUFJLENBQVc7SUFDZixRQUFRLENBQVM7SUFDakIsYUFBYSxDQUFRO0lBQzlCLGVBQWUsQ0FBVTtJQUNoQixTQUFTLENBQVk7SUFDckIsYUFBYSxDQUFTO0lBQ3RCLE1BQU0sQ0FBVTtJQUNoQixlQUFlLENBQU87SUFDdEIsVUFBVSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBQ3ZDLFNBQVMsQ0FBVTtJQUNuQixRQUFRLENBQVU7SUFFM0IsWUFBWSxPQUFrQixFQUFFLFlBQTJCLEVBQUUsMEJBQWlDO1FBQzVGLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixFQUFHLENBQUM7UUFDeEQsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsYUFBYSxFQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEUsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztRQUNuQyxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDO1FBQ3JDLElBQUksZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQzFCLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDcEQsUUFBUSxVQUFVLEVBQUUsQ0FBQztZQUNuQixL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