rocketmq-client-nodejs-beta
Version:
RocketMQ Node.js Client
96 lines • 8.77 kB
JavaScript
;
/**
* 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 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;
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);
const messages = messageList.map(message => new message_1.MessageView(message, mq, transportDeliveryTimestamp));
return messages;
}
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;
}
}
exports.Consumer = Consumer;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uc3VtZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3VtZXIvQ29uc3VtZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRzs7O0FBR0gsMEVBSW1EO0FBQ25ELHdDQUF5QztBQUV6Qyw0Q0FBNkM7QUFDN0Msc0NBQTBEO0FBQzFELGtDQUF5RDtBQU96RCxNQUFzQixRQUFTLFNBQVEsbUJBQVU7SUFDNUIsYUFBYSxDQUFTO0lBRXpDLFlBQVksT0FBd0I7UUFDbEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO0lBQzdDLENBQUM7SUFFUyx5QkFBeUIsQ0FBQyxTQUFpQixFQUFFLEVBQWdCLEVBQ3JFLGdCQUFrQyxFQUFFLGlCQUF5QixFQUFFLGtCQUEwQjtRQUN6RixPQUFPLElBQUksa0NBQXFCLEVBQUU7YUFDL0IsUUFBUSxDQUFDLElBQUEscUJBQWMsRUFBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDNUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUNoQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUNsRCxxQkFBcUIsQ0FBQyxJQUFBLHFCQUFjLEVBQUMsa0JBQWtCLENBQUMsQ0FBQzthQUN6RCxZQUFZLENBQUMsU0FBUyxDQUFDO2FBQ3ZCLFlBQVksQ0FBQyxLQUFLLENBQUM7YUFDbkIsb0JBQW9CLENBQUMsSUFBQSxxQkFBYyxFQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRVMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUE4QixFQUFFLEVBQWdCLEVBQUUsYUFBcUI7UUFDcEcsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDdEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxD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