UNPKG

rocketmq-client-nodejs-beta

Version:
95 lines (94 loc) 4.31 kB
/** * 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. */ import { Metadata } from '@grpc/grpc-js'; import { Settings as SettingsPB, Status, ClientType } from '../../proto/apache/rocketmq/v2/definition_pb'; import { RecoverOrphanedTransactionCommand, VerifyMessageCommand, PrintThreadStackTraceCommand, TelemetryCommand, HeartbeatRequest, NotifyClientTerminationRequest } from '../../proto/apache/rocketmq/v2/service_pb'; import { TopicRouteData, Endpoints } from '../route'; import { Settings } from './Settings'; import { ILogger } from './Logger'; import { SessionCredentials } from './SessionCredentials'; import { RpcClientManager } from './RpcClientManager'; import { TelemetrySession } from './TelemetrySession'; export interface BaseClientOptions { sslEnabled?: boolean; /** * rocketmq cluster endpoints, e.g.: * - 127.0.0.1:8081;127.0.0.1:8082 * - 127.0.0.1:8081 * - example.com * - example.com:8443 */ endpoints: string; namespace: string; sessionCredentials?: SessionCredentials; requestTimeout?: number; logger?: ILogger; topics?: string[]; } /** * RocketMQ Base Client, Consumer and Producer should extends this class * * it handle: * - RpcClient lifecycle, e.g: cleanup the idle clients * - startup flow * - periodic Task */ export declare abstract class BaseClient { #private; readonly clientId: string; readonly clientType = ClientType.CLIENT_TYPE_UNSPECIFIED; readonly sslEnabled: boolean; readonly namespace: string; protected readonly endpoints: Endpoints; protected readonly isolated: Map<string, Endpoints>; protected readonly requestTimeout: number; protected readonly topics: Set<string>; protected readonly topicRouteCache: Map<string, TopicRouteData>; protected readonly logger: ILogger; protected readonly rpcClientManager: RpcClientManager; constructor(options: BaseClientOptions); /** * Startup flow * https://github.com/apache/rocketmq-clients/blob/master/docs/workflow.md#startup */ startup(): Promise<void>; shutdown(): Promise<void>; protected getTotalRouteEndpoints(): Endpoints[]; protected findNewRouteEndpoints(endpointsList: Endpoints[]): Endpoints[]; protected updateRoutes(): Promise<void>; protected getRouteData(topic: string): Promise<TopicRouteData>; settingsCommand(): TelemetryCommand; getTelemetrySession(endpoints: Endpoints): TelemetrySession; createTelemetryStream(endpoints: Endpoints): import("@grpc/grpc-js").ClientDuplexStream<TelemetryCommand, TelemetryCommand>; telemetry(endpoints: Endpoints, command: TelemetryCommand): void; getRequestMetadata(): Metadata; protected abstract getSettings(): Settings; /** * Wrap heartbeat request */ protected abstract wrapHeartbeatRequest(): HeartbeatRequest; /** * Wrap notify client termination request. */ protected abstract wrapNotifyClientTerminationRequest(): NotifyClientTerminationRequest; protected onTopicRouteDataUpdate(_topic: string, _topicRouteData: TopicRouteData): void; onUnknownCommand(endpoints: Endpoints, status: Status.AsObject): void; onSettingsCommand(_endpoints: Endpoints, settings: SettingsPB): void; onRecoverOrphanedTransactionCommand(_endpoints: Endpoints, command: RecoverOrphanedTransactionCommand): void; onVerifyMessageCommand(endpoints: Endpoints, command: VerifyMessageCommand): void; onPrintThreadStackTraceCommand(endpoints: Endpoints, command: PrintThreadStackTraceCommand): void; }