starta.microservice 0.1.4879 → 0.1.4882
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import ServerLogger from '
|
|
2
|
-
import { IMessageBroker } from '
|
|
1
|
+
import ServerLogger from '../logger';
|
|
2
|
+
import { IMessageBroker } from '../messageBroker/types';
|
|
3
3
|
declare class SnsSqs implements IMessageBroker {
|
|
4
4
|
#private;
|
|
5
5
|
constructor(logger: ServerLogger);
|
|
@@ -11,6 +11,7 @@ declare class SnsSqs implements IMessageBroker {
|
|
|
11
11
|
consume(topicName: string, queueName: string, onMessage: (msg: any, { logger }?: {
|
|
12
12
|
logger: ServerLogger;
|
|
13
13
|
}) => Promise<void>): Promise<void>;
|
|
14
|
+
private processMessagesInParallel;
|
|
14
15
|
private createTopic;
|
|
15
16
|
private createQueueWithDLQ;
|
|
16
17
|
private subscribeQueueToTopic;
|
|
@@ -16,6 +16,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
16
16
|
var _SnsSqs_logger, _SnsSqs_snsClient, _SnsSqs_sqsClient, _SnsSqs_createdTopics, _SnsSqs_createdQueues, _SnsSqs_isStopRequested, _SnsSqs_promises;
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
const aws_sdk_1 = __importDefault(require("aws-sdk"));
|
|
19
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
19
20
|
const config_1 = __importDefault(require("../../config"));
|
|
20
21
|
const loggerContext_1 = __importDefault(require("../../contexts/loggerContext"));
|
|
21
22
|
const executionContext_1 = __importDefault(require("../../contexts/executionContext"));
|
|
@@ -88,16 +89,18 @@ class SnsSqs {
|
|
|
88
89
|
__classPrivateFieldGet(this, _SnsSqs_logger, "f").generic.info("Disconnected from SNS and SQS called");
|
|
89
90
|
}
|
|
90
91
|
async emitEvent(topicName, eventData) {
|
|
92
|
+
const messageId = crypto_1.default.randomBytes(10).toString('hex');
|
|
91
93
|
topicName = `${config_1.default.environment}-${topicName}`;
|
|
92
94
|
const topicArn = await this.createTopic(topicName);
|
|
93
95
|
const logger = (loggerContext_1.default.getLogger() ?? __classPrivateFieldGet(this, _SnsSqs_logger, "f")).withParams({
|
|
94
|
-
serviceBroker: { topicName },
|
|
96
|
+
serviceBroker: { topicName, messageId },
|
|
95
97
|
});
|
|
96
98
|
try {
|
|
97
99
|
await __classPrivateFieldGet(this, _SnsSqs_snsClient, "f").publish({
|
|
98
100
|
TopicArn: topicArn,
|
|
99
101
|
Message: JSON.stringify({
|
|
100
102
|
eventData,
|
|
103
|
+
messageId,
|
|
101
104
|
context: executionContext_1.default.getFullData(),
|
|
102
105
|
}),
|
|
103
106
|
MessageAttributes: {
|
|
@@ -124,44 +127,55 @@ class SnsSqs {
|
|
|
124
127
|
const params = {
|
|
125
128
|
QueueUrl: queueUrl,
|
|
126
129
|
WaitTimeSeconds: 20,
|
|
127
|
-
VisibilityTimeout:
|
|
128
|
-
MaxNumberOfMessages:
|
|
130
|
+
VisibilityTimeout: 20,
|
|
131
|
+
MaxNumberOfMessages: 10
|
|
129
132
|
};
|
|
130
133
|
const data = await __classPrivateFieldGet(this, _SnsSqs_sqsClient, "f").receiveMessage(params).promise();
|
|
131
134
|
if (data.Messages) {
|
|
132
|
-
|
|
133
|
-
let logger = __classPrivateFieldGet(this, _SnsSqs_logger, "f");
|
|
134
|
-
try {
|
|
135
|
-
const messageBody = JSON.parse(message.Body);
|
|
136
|
-
const { eventData, context } = JSON.parse(messageBody.Message);
|
|
137
|
-
executionContext_1.default.setFullData(context);
|
|
138
|
-
const startTime = process.hrtime();
|
|
139
|
-
logger = logger.withParams({
|
|
140
|
-
correlationId: executionContext_1.default.getCorrelationId(),
|
|
141
|
-
login: executionContext_1.default.getAuthorizedUserLogin(),
|
|
142
|
-
serviceBroker: { topicName, queueName },
|
|
143
|
-
});
|
|
144
|
-
logger.generic.info("Consuming started");
|
|
145
|
-
await onMessage(eventData, { logger });
|
|
146
|
-
const diff = process.hrtime(startTime);
|
|
147
|
-
const timeInMilliseconds = diff[0] * 1000 + diff[1] / 1000000;
|
|
148
|
-
logger.generic.info("Consuming finished", { taskDuration: timeInMilliseconds });
|
|
149
|
-
await __classPrivateFieldGet(this, _SnsSqs_sqsClient, "f").deleteMessage({
|
|
150
|
-
QueueUrl: queueUrl,
|
|
151
|
-
ReceiptHandle: message.ReceiptHandle
|
|
152
|
-
}).promise();
|
|
153
|
-
}
|
|
154
|
-
catch (e) {
|
|
155
|
-
logger.generic.error(`Consuming error\nerror: |${e.toString()}|\nobject: |${message.Body}|`, e);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
135
|
+
await this.processMessagesInParallel(data.Messages, onMessage, topicName, queueName, queueUrl);
|
|
158
136
|
}
|
|
159
137
|
}
|
|
160
138
|
};
|
|
161
139
|
__classPrivateFieldGet(this, _SnsSqs_promises, "f").push(consumeLoop().catch(e => {
|
|
162
|
-
__classPrivateFieldGet(this, _SnsSqs_logger, "f").
|
|
140
|
+
__classPrivateFieldGet(this, _SnsSqs_logger, "f").withParams({
|
|
141
|
+
serviceBroker: {
|
|
142
|
+
queueName,
|
|
143
|
+
topicName
|
|
144
|
+
}
|
|
145
|
+
}).generic.error(`Consumer fatal error\nerror: |${e.toString()}|`, e);
|
|
163
146
|
}));
|
|
164
147
|
}
|
|
148
|
+
async processMessagesInParallel(messages, onMessage, topicName, queueName, queueUrl) {
|
|
149
|
+
const processMessage = async (message) => {
|
|
150
|
+
let logger = __classPrivateFieldGet(this, _SnsSqs_logger, "f");
|
|
151
|
+
try {
|
|
152
|
+
const messageBody = JSON.parse(message.Body);
|
|
153
|
+
const { eventData, messageId, context } = JSON.parse(messageBody.Message);
|
|
154
|
+
executionContext_1.default.setFullData(context);
|
|
155
|
+
const startTime = process.hrtime();
|
|
156
|
+
logger = logger.withParams({
|
|
157
|
+
messageId,
|
|
158
|
+
correlationId: executionContext_1.default.getCorrelationId(),
|
|
159
|
+
login: executionContext_1.default.getAuthorizedUserLogin(),
|
|
160
|
+
serviceBroker: { topicName, queueName },
|
|
161
|
+
});
|
|
162
|
+
logger.generic.info("Consuming started");
|
|
163
|
+
await onMessage(eventData, { logger });
|
|
164
|
+
const diff = process.hrtime(startTime);
|
|
165
|
+
const timeInMilliseconds = diff[0] * 1000 + diff[1] / 1000000;
|
|
166
|
+
logger.generic.info("Consuming finished", { taskDuration: timeInMilliseconds });
|
|
167
|
+
await __classPrivateFieldGet(this, _SnsSqs_sqsClient, "f").deleteMessage({
|
|
168
|
+
QueueUrl: queueUrl,
|
|
169
|
+
ReceiptHandle: message.ReceiptHandle
|
|
170
|
+
}).promise();
|
|
171
|
+
}
|
|
172
|
+
catch (e) {
|
|
173
|
+
logger.generic.error(`Consuming error\nerror: |${e.toString()}|\nobject: |${message.Body}|`, e);
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
const messageProcessingPromises = messages.map(processMessage);
|
|
177
|
+
await Promise.allSettled(messageProcessingPromises);
|
|
178
|
+
}
|
|
165
179
|
async createTopic(topicName) {
|
|
166
180
|
if (!__classPrivateFieldGet(this, _SnsSqs_createdTopics, "f").has(topicName)) {
|
|
167
181
|
__classPrivateFieldGet(this, _SnsSqs_logger, "f").generic.info('Creating topic', {
|
|
@@ -236,6 +250,17 @@ class SnsSqs {
|
|
|
236
250
|
AttributeNames: ['QueueArn']
|
|
237
251
|
}).promise();
|
|
238
252
|
const queueArn = queueAttributes.QueueArn;
|
|
253
|
+
const subscriptions = await __classPrivateFieldGet(this, _SnsSqs_snsClient, "f").listSubscriptionsByTopic({ TopicArn: topicArn }).promise();
|
|
254
|
+
const isAlreadySubscribed = subscriptions.Subscriptions.some(subscription => subscription.Endpoint === queueArn);
|
|
255
|
+
if (isAlreadySubscribed) {
|
|
256
|
+
__classPrivateFieldGet(this, _SnsSqs_logger, "f").generic.debug('Queue is already subscribed to the topic', {
|
|
257
|
+
serviceBroker: {
|
|
258
|
+
queueName,
|
|
259
|
+
topicName
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
239
264
|
// Subscribe the queue to the topic
|
|
240
265
|
await __classPrivateFieldGet(this, _SnsSqs_snsClient, "f").subscribe({
|
|
241
266
|
Protocol: 'sqs',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SnsSqs.js","sourceRoot":"","sources":["../../../src/adapters/messageBroker/SnsSqs.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,sDAA0B;
|
|
1
|
+
{"version":3,"file":"SnsSqs.js","sourceRoot":"","sources":["../../../src/adapters/messageBroker/SnsSqs.ts"],"names":[],"mappings":"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"}
|