rocketmq-client-nodejs
Version:
RocketMQ Node.js Client
116 lines • 9.22 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.PublishingMessage = void 0;
const timestamp_pb_1 = require("google-protobuf/google/protobuf/timestamp_pb");
const definition_pb_1 = require("../../proto/apache/rocketmq/v2/definition_pb");
const util_1 = require("../util");
const client_1 = require("../client");
const Message_1 = require("./Message");
const MessageId_1 = require("./MessageId");
class PublishingMessage extends Message_1.Message {
messageId;
messageType;
constructor(options, publishingSettings, txEnabled) {
super(options);
const length = this.body.length;
const maxBodySizeBytes = publishingSettings.maxBodySizeBytes;
if (length > maxBodySizeBytes) {
throw new TypeError(`Message body size exceeds the threshold, max size=${maxBodySizeBytes} bytes`);
}
// Generate message id.
this.messageId = MessageId_1.MessageIdFactory.create().toString();
// Normal message.
if (!this.messageGroup && !this.liteTopic && !this.deliveryTimestamp && !this.priority && !txEnabled) {
this.messageType = definition_pb_1.MessageType.NORMAL;
return;
}
// Fifo message.
if (this.messageGroup && !txEnabled) {
this.messageType = definition_pb_1.MessageType.FIFO;
return;
}
// Lite message.
if (this.liteTopic && !txEnabled) {
this.messageType = definition_pb_1.MessageType.LITE;
return;
}
// Delay message.
if (this.deliveryTimestamp && !txEnabled) {
this.messageType = definition_pb_1.MessageType.DELAY;
return;
}
// Priority message.
if (this.priority && !txEnabled) {
this.messageType = definition_pb_1.MessageType.PRIORITY;
return;
}
// Transaction message.
if (!this.messageGroup &&
!this.liteTopic && !this.deliveryTimestamp && !this.priority && txEnabled) {
this.messageType = definition_pb_1.MessageType.TRANSACTION;
return;
}
// Transaction semantics is conflicted with fifo/delay/lite/priority.
throw new TypeError('Transactional message should not set messageGroup, liteTopic, deliveryTimestamp or priority');
}
/**
* This method should be invoked before each message sending, because the born time is reset before each
* invocation, which means that it should not be invoked ahead of time.
*/
toProtobuf(namespace, mq) {
const systemProperties = new definition_pb_1.SystemProperties()
.setKeysList(this.keys)
.setMessageId(this.messageId)
.setBornTimestamp(timestamp_pb_1.Timestamp.fromDate(new Date()))
.setBornHost(client_1.UserAgent.INSTANCE.hostname)
.setBodyEncoding(definition_pb_1.Encoding.IDENTITY)
.setQueueId(mq.queueId)
.setMessageType(this.messageType);
if (this.tag) {
systemProperties.setTag(this.tag);
}
if (this.deliveryTimestamp) {
systemProperties.setDeliveryTimestamp(timestamp_pb_1.Timestamp.fromDate(this.deliveryTimestamp));
}
if (this.messageGroup) {
systemProperties.setMessageGroup(this.messageGroup);
}
if (this.liteTopic !== undefined) {
systemProperties.setLiteTopic(this.liteTopic);
}
if (this.priority !== undefined) {
systemProperties.setPriority(this.priority);
}
const resource = (0, util_1.createResource)(this.topic);
resource.setResourceNamespace(namespace);
const message = new definition_pb_1.Message()
.setTopic(resource)
.setBody(this.body)
.setSystemProperties(systemProperties);
if (this.properties) {
const userProperties = message.getUserPropertiesMap();
for (const [key, value] of this.properties.entries()) {
userProperties.set(key, value);
}
}
return message;
}
}
exports.PublishingMessage = PublishingMessage;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHVibGlzaGluZ01lc3NhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWVzc2FnZS9QdWJsaXNoaW5nTWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHOzs7QUFFSCwrRUFBeUU7QUFDekUsZ0ZBRXNEO0FBRXRELGtDQUF5QztBQUV6QyxzQ0FBc0M7QUFDdEMsdUNBQW9EO0FBQ3BELDJDQUErQztBQUUvQyxNQUFhLGlCQUFrQixTQUFRLGlCQUFPO0lBQ25DLFNBQVMsQ0FBUztJQUNsQixXQUFXLENBQWM7SUFFbEMsWUFBWSxPQUF1QixFQUFFLGtCQUFzQyxFQUFFLFNBQWtCO1FBQzdGLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ2hDLE1BQU0sZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUM7UUFDN0QsSUFBSSxNQUFNLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztZQUM5QixNQUFNLElBQUksU0FBUyxDQUFDLHFEQUFxRCxnQkFBZ0IsUUFBUSxDQUFDLENBQUM7UUFDckcsQ0FBQztRQUNELHVCQUF1QjtRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLDRCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RELGtCQUFrQjtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDckcsSUFBSSxDQUFDLFdBQVcsR0FBRywyQkFBVyxDQUFDLE1BQU0sQ0FBQztZQUN0QyxPQUFPO1FBQ1QsQ0FBQztRQUNELGdCQUFnQjtRQUNoQixJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsV0FBVyxHQUFHLDJCQUFXLENBQUMsSUFBSSxDQUFDO1lBQ3BDLE9BQU87UUFDVCxDQUFDO1FBQ0QsZ0JBQWdCO1FBQ2hCLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxXQUFXLEdBQUcsMkJBQVcsQ0FBQyxJQUFJLENBQUM7WUFDcEMsT0FBTztRQUNULENBQUM7UUFDRCxpQkFBaUI7UUFDakIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsV0FBVyxHQUFHLDJCQUFXLENBQUMsS0FBSyxDQUFDO1lBQ3JDLE9BQU87UUFDVCxDQUFDO1FBQ0Qsb0JBQW9CO1FBQ3BCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxXQUFXLEdBQUcsMkJBQVcsQ0FBQyxRQUFRLENBQUM7WUFDeEMsT0FBTztRQUNULENBQUM7UUFDRCx1QkFBdUI7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZO1lBQ2xCLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksU0FBUyxFQUFFLENBQUM7WUFDOUUsSUFBSSxDQUFDLFdBQVcsR0FBRywyQkFBVyxDQUFDLFdBQVcsQ0FBQztZQUMzQyxPQUFPO1FBQ1QsQ0FBQztRQUNELHFFQUFxRTtRQUNyRSxNQUFNLElBQUksU0FBUyxDQUFDLDZGQUE2RixDQUFDLENBQUM7SUFDckgsQ0FBQztJQUVEOzs7T0FHRztJQUNILFVBQVUsQ0FBQyxTQUFpQixFQUFFLEVBQWdCO1FBQzVDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxnQ0FBZ0IsRUFBRTthQUM1QyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzthQUN0QixZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzthQUM1QixnQkFBZ0IsQ0FBQyx3QkFBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7YUFDaEQsV0FBVyxDQUFDLGtCQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQzthQUN4QyxlQUFlLENBQUMsd0JBQVEsQ0FBQyxRQUFRLENBQUM7YUFDbEMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUM7YUFDdEIsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwQyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNiLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDM0IsZ0JBQWdCLENBQUMsb0JBQW9CLENBQUMsd0JBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUNwRixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNoQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFBLHFCQUFjLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6QyxNQUFNLE9BQU8sR0FBRyxJQUFJLHVCQUFTLEVBQUU7YUFDNUIsUUFBUSxDQUFDLFFBQVEsQ0FBQzthQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzthQUNsQixtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQ3RELEtBQUssTUFBTSxDQUFFLEdBQUcsRUFBRSxLQUFLLENBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7Z0JBQ3ZELGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBM0ZELDhDQTJGQyJ9