UNPKG

rocketmq-client-nodejs

Version:
139 lines 12.6 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.Consumer = void 0; const service_pb_1 = require("../../proto/apache/rocketmq/v2/service_pb"); const definition_pb_1 = require("../../proto/apache/rocketmq/v2/definition_pb"); const message_1 = require("../message"); const exception_1 = require("../exception"); const client_1 = require("../client"); const util_1 = require("../util"); class Consumer extends client_1.BaseClient { consumerGroup; constructor(options) { super(options); this.consumerGroup = options.consumerGroup; } wrapReceiveMessageRequest(batchSize, mq, filterExpression, invisibleDuration, longPollingTimeout) { return new service_pb_1.ReceiveMessageRequest() .setGroup((0, util_1.createResource)(this.consumerGroup)) .setMessageQueue(mq.toProtobuf()) .setFilterExpression(filterExpression.toProtobuf()) .setLongPollingTimeout((0, util_1.createDuration)(longPollingTimeout)) .setBatchSize(batchSize) .setAutoRenew(false) .setInvisibleDuration((0, util_1.createDuration)(invisibleDuration)); } async receiveMessage(request, mq, awaitDuration) { const endpoints = mq.broker.endpoints; const timeout = this.requestTimeout + awaitDuration; let status; try { this.logger.debug?.('Receiving messages from broker, topic=%s, endpoints=%s, batchSize=%d, clientId=%s', request.getMessageQueue()?.getTopic()?.getName(), endpoints, request.getBatchSize(), this.clientId); const responses = await this.rpcClientManager.receiveMessage(endpoints, request, timeout); const messageList = []; let transportDeliveryTimestamp; for (const response of responses) { switch (response.getContentCase()) { case service_pb_1.ReceiveMessageResponse.ContentCase.STATUS: status = response.getStatus()?.toObject(); break; case service_pb_1.ReceiveMessageResponse.ContentCase.MESSAGE: messageList.push(response.getMessage()); break; case service_pb_1.ReceiveMessageResponse.ContentCase.DELIVERY_TIMESTAMP: transportDeliveryTimestamp = response.getDeliveryTimestamp()?.toDate(); break; default: // this.logger.warn("[Bug] Not recognized content for receive message response, mq={}, " + // "clientId={}, response={}", mq, clientId, response); } } exception_1.StatusChecker.check(status); if (messageList.length > 0) { this.logger.debug?.('Received %d messages successfully, topic=%s, endpoints=%s, clientId=%s', messageList.length, request.getMessageQueue()?.getTopic()?.getName(), endpoints, this.clientId); } const messages = messageList.map(message => new message_1.MessageView(message, mq, transportDeliveryTimestamp)); return messages; } catch (err) { this.logger.error('Failed to receive messages, topic=%s, endpoints=%s, clientId=%s, error=%s', request.getMessageQueue()?.getTopic()?.getName(), endpoints, this.clientId, err); throw err; } } async ackMessage(messageView) { const endpoints = messageView.endpoints; const request = new service_pb_1.AckMessageRequest() .setGroup((0, util_1.createResource)(this.consumerGroup)) .setTopic((0, util_1.createResource)(messageView.topic)); request.addEntries() .setMessageId(messageView.messageId) .setReceiptHandle(messageView.receiptHandle); const res = await this.rpcClientManager.ackMessage(endpoints, request, this.requestTimeout); // FIXME: handle fail ack const response = res.toObject(); exception_1.StatusChecker.check(response.status); return response.entriesList; } async invisibleDuration(messageView, invisibleDuration) { const request = new service_pb_1.ChangeInvisibleDurationRequest() .setGroup((0, util_1.createResource)(this.consumerGroup)) .setTopic((0, util_1.createResource)(messageView.topic)) .setReceiptHandle(messageView.receiptHandle) .setInvisibleDuration((0, util_1.createDuration)(invisibleDuration)) .setMessageId(messageView.messageId); const res = await this.rpcClientManager.changeInvisibleDuration(messageView.endpoints, request, this.requestTimeout); const response = res.toObject(); exception_1.StatusChecker.check(response.status); return response.receiptHandle; } /** * Expose public methods for ProcessQueue to access RPC operations */ async ackMessageViaRpc(endpoints, request, timeout) { const res = await this.rpcClientManager.ackMessage(endpoints, request, timeout); return res; } async changeInvisibleDurationViaRpc(endpoints, request, timeout) { const res = await this.rpcClientManager.changeInvisibleDuration(endpoints, request, timeout); return res; } async forwardMessageToDeadLetterQueueViaRpc(endpoints, request, timeout) { const res = await this.rpcClientManager.forwardMessageToDeadLetterQueue(endpoints, request, timeout); return res; } /** * Get the consumer group name. * * @return Consumer group name */ getConsumerGroup() { return this.consumerGroup; } /** * Check if this is a lite consumer. * * @return true if this is a LITE_PUSH_CONSUMER */ isLiteConsumer() { const clientType = this.getClientType?.(); return clientType === definition_pb_1.ClientType.LITE_PUSH_CONSUMER; } } exports.Consumer = Consumer; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uc3VtZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3VtZXIvQ29uc3VtZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRzs7O0FBR0gsMEVBSW1EO0FBQ25ELGdGQUEwRTtBQUMxRSx3Q0FBeUM7QUFFekMsNENBQTZDO0FBQzdDLHNDQUEwRDtBQUMxRCxrQ0FBeUQ7QUFPekQsTUFBc0IsUUFBUyxTQUFRLG1CQUFVO0lBQzVCLGFBQWEsQ0FBUztJQUV6QyxZQUFZLE9BQXdCO1FBQ2xDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztJQUM3QyxDQUFDO0lBRVMseUJBQXlCLENBQUMsU0FBaUIsRUFBRSxFQUFnQixFQUNyRSxnQkFBa0MsRUFBRSxpQkFBeUIsRUFBRSxrQkFBMEI7UUFDekYsT0FBTyxJQUFJLGtDQUFxQixFQUFFO2FBQy9CLFFBQVEsQ0FBQyxJQUFBLHFCQUFjLEVBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQzVDLGVBQWUsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDaEMsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDbEQscUJBQXFCLENBQUMsSUFBQSxxQkFBYyxFQUFDLGtCQUFrQixDQUFDLENBQUM7YUFDekQsWUFBWSxDQUFDLFNBQVMsQ0FBQzthQUN2QixZQUFZLENBQUMsS0FBSyxDQUFDO2FBQ25CLG9CQUFvQixDQUFDLElBQUEscUJBQWMsRUFBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVTLEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBOEIsRUFBRSxFQUFnQixFQUFFLGFBQXFCO1FBQ3BHLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ3RDLE1BQU0sT0FB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