UNPKG

rocketmq-client-nodejs-beta

Version:
123 lines 8.36 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. */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.MessageIdFactory = exports.MessageId = exports.MESSAGE_VERSION = void 0; const address_1 = __importDefault(require("address")); var MESSAGE_VERSION; (function (MESSAGE_VERSION) { MESSAGE_VERSION[MESSAGE_VERSION["V0"] = 0] = "V0"; MESSAGE_VERSION[MESSAGE_VERSION["V1"] = 1] = "V1"; })(MESSAGE_VERSION || (exports.MESSAGE_VERSION = MESSAGE_VERSION = {})); class MessageId { id; /** * e.g.: 0x01: fixed 1 byte for current version * offset = 0 */ version; /** * e.g.: 0x56F7E71C361B: lower 6 bytes of local mac address * offset = 1 */ macAddress; /** * e.g.: 0x21BC: lower 2 bytes of process id * offset = 7 */ processId; /** * e.g: 0x024CCDBE: seconds since 2021-01-01 00:00:00(UTC+0, lower 4 bytes) * offset = 9 */ timestamp; /** * e.g.: 0x00000000: sequence number(4 bytes) * offset = 13 */ sequence; toString() { return this.id; } } exports.MessageId = MessageId; const MAX_UINT32 = 0xFFFFFFFF; const MAX_UINT16 = 0xFFFF; /** * Message Identifier * https://github.com/apache/rocketmq-clients/blob/master/docs/message_id.md */ class MessageIdFactory { // static #hostname = hostname(); static #sequence = 0; static #buf = Buffer.alloc(1 + 6 + 2 + 4 + 4); // 2021-01-01 00:00:00(UTC+0), 1609459200000 static #sinceTimestamp = new Date('2021-01-01T00:00:00Z').getTime() / 1000; // lower 2 bytes of process id static #processId = process.pid % MAX_UINT16; static MAC = '000000000000'; static create() { const messageId = new MessageId(); messageId.version = MESSAGE_VERSION.V1; messageId.macAddress = this.MAC; messageId.processId = this.#processId; messageId.timestamp = this.#getCurrentTimestamp(); messageId.sequence = this.#sequence++; if (this.#sequence > MAX_UINT32) { this.#sequence = 0; } this.#buf.writeUInt8(messageId.version, 0); this.#buf.write(messageId.macAddress, 1, 'hex'); this.#buf.writeUInt16BE(messageId.processId, 7); this.#buf.writeUInt32BE(messageId.timestamp, 9); this.#buf.writeUInt32BE(messageId.sequence, 13); messageId.id = this.#buf.toString('hex').toUpperCase(); return messageId; } static decode(id) { const messageId = new MessageId(); messageId.id = id; this.#buf.write(id, 0, 'hex'); messageId.version = this.#buf.readUInt8(0); messageId.macAddress = this.#buf.subarray(1, 7).toString('hex'); messageId.processId = this.#buf.readUInt16BE(7); messageId.timestamp = this.#buf.readUInt32BE(9); messageId.sequence = this.#buf.readUInt32BE(13); return messageId; } static #getCurrentTimestamp() { // use lower 4 bytes return Math.floor(Date.now() / 1000 - this.#sinceTimestamp) % MAX_UINT32; } } exports.MessageIdFactory = MessageIdFactory; // set current mac address address_1.default.mac((err, mac) => { if (err) { console.warn('[rocketmq-client-nodejs] can\'t get mac address, %s', err.message); return; } if (!mac) { console.warn('[rocketmq-client-nodejs] can\'t get mac address'); return; } MessageIdFactory.MAC = mac.replaceAll(':', ''); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVzc2FnZUlkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21lc3NhZ2UvTWVzc2FnZUlkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7Ozs7OztBQUVILHNEQUE4QjtBQUU5QixJQUFZLGVBR1g7QUFIRCxXQUFZLGVBQWU7SUFDekIsaURBQVMsQ0FBQTtJQUNULGlEQUFTLENBQUE7QUFDWCxDQUFDLEVBSFcsZUFBZSwrQkFBZixlQUFlLFFBRzFCO0FBRUQsTUFBYSxTQUFTO0lBQ3BCLEVBQUUsQ0FBUztJQUNYOzs7T0FHRztJQUNILE9BQU8sQ0FBa0I7SUFDekI7OztPQUdHO0lBQ0gsVUFBVSxDQUFTO0lBQ25COzs7T0FHRztJQUNILFNBQVMsQ0FBUztJQUNsQjs7O09BR0c7SUFDSCxTQUFTLENBQVM7SUFDbEI7OztPQUdHO0lBQ0gsUUFBUSxDQUFTO0lBRWpCLFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBL0JELDhCQStCQztBQUVELE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQztBQUM5QixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUM7QUFFMUI7OztHQUdHO0FBQ0gsTUFBYSxnQkFBZ0I7SUFDM0IsaUNBQWlDO0lBQ2pDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUMsNENBQTRDO0lBQzVDLE1BQU0sQ0FBQyxlQUFlLEdBQUcsSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFDM0UsOEJBQThCO0lBQzlCLE1BQU0sQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsR0FBRyxV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