rocketmq-client-nodejs-beta
Version:
RocketMQ Node.js Client
101 lines • 9.1 kB
JavaScript
"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.TelemetrySession = void 0;
const service_pb_1 = require("../../proto/apache/rocketmq/v2/service_pb");
class TelemetrySession {
#endpoints;
#baseClient;
#logger;
#stream;
constructor(baseClient, endpoints, logger) {
this.#endpoints = endpoints;
this.#baseClient = baseClient;
this.#logger = logger;
this.#renewStream(true);
}
release() {
this.#logger.info('Begin to release telemetry session, endpoints=%s, clientId=%s', this.#endpoints, this.#baseClient.clientId);
this.#stream.end();
this.#stream.removeAllListeners();
}
write(command) {
this.#stream.write(command);
}
syncSettings() {
const command = this.#baseClient.settingsCommand();
this.write(command);
}
#renewStream(inited) {
this.#stream = this.#baseClient.createTelemetryStream(this.#endpoints);
this.#stream.on('data', this.#onData.bind(this));
this.#stream.once('error', this.#onError.bind(this));
this.#stream.once('end', this.#onEnd.bind(this));
if (!inited) {
this.syncSettings();
}
}
#onData(command) {
const endpoints = this.#endpoints;
const clientId = this.#baseClient.clientId;
const commandCase = command.getCommandCase();
switch (commandCase) {
case service_pb_1.TelemetryCommand.CommandCase.SETTINGS:
this.#logger.info('Receive settings from remote, endpoints=%s, clientId=%s', endpoints, clientId);
this.#baseClient.onSettingsCommand(endpoints, command.getSettings());
break;
case service_pb_1.TelemetryCommand.CommandCase.RECOVER_ORPHANED_TRANSACTION_COMMAND: {
this.#logger.info('Receive orphaned transaction recovery command from remote, endpoints=%s, clientId=%s', endpoints, clientId);
this.#baseClient.onRecoverOrphanedTransactionCommand(endpoints, command.getRecoverOrphanedTransactionCommand());
break;
}
case service_pb_1.TelemetryCommand.CommandCase.VERIFY_MESSAGE_COMMAND: {
this.#logger.info('Receive message verification command from remote, endpoints=%s, clientId=%s', endpoints, clientId);
this.#baseClient.onVerifyMessageCommand(endpoints, command.getVerifyMessageCommand());
break;
}
case service_pb_1.TelemetryCommand.CommandCase.PRINT_THREAD_STACK_TRACE_COMMAND: {
this.#logger.info('Receive thread stack print command from remote, endpoints=%s, clientId=%s', endpoints, clientId);
this.#baseClient.onPrintThreadStackTraceCommand(endpoints, command.getPrintThreadStackTraceCommand());
break;
}
default: {
const commandObj = command.toObject();
this.#logger.warn('Receive unrecognized command from remote, endpoints=%s, commandCase=%j, command=%j, clientId=%s', endpoints, commandCase, commandObj, clientId);
// should telemetry session start fail
this.#baseClient.onUnknownCommand(endpoints, commandObj.status);
}
}
}
#onError(err) {
this.#logger.error('Exception raised from stream response observer, endpoints=%s, clientId=%s, error=%s', this.#endpoints, this.#baseClient.clientId, err);
this.release();
setTimeout(() => {
this.#renewStream(false);
}, 1000);
}
#onEnd() {
this.#logger.info('Receive completion for stream response observer, endpoints=%s, clientId=%s', this.#endpoints, this.#baseClient.clientId);
this.release();
setTimeout(() => {
this.#renewStream(false);
}, 1000);
}
}
exports.TelemetrySession = TelemetrySession;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVsZW1ldHJ5U2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvVGVsZW1ldHJ5U2Vzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHOzs7QUFHSCwwRUFBNkU7QUFLN0UsTUFBYSxnQkFBZ0I7SUFDM0IsVUFBVSxDQUFZO0lBQ3RCLFdBQVcsQ0FBYTtJQUN4QixPQUFPLENBQVU7SUFDakIsT0FBTyxDQUF5RDtJQUVoRSxZQUFZLFVBQXNCLEVBQUUsU0FBb0IsRUFBRSxNQUFlO1FBQ3ZFLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQywrREFBK0QsRUFDL0UsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBeUI7UUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELFlBQVk7UUFDVixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ25ELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFlO1FBQzFCLElBQUksQ0FBQyxPQUFP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