starta.microservice 0.1.4879 → 0.1.4895
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,8 @@ 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;
|
|
15
|
+
private serializeError;
|
|
14
16
|
private createTopic;
|
|
15
17
|
private createQueueWithDLQ;
|
|
16
18
|
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,23 +89,30 @@ 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 {
|
|
99
|
+
const messageAttributes = executionContext_1.default.getCorrelationId()
|
|
100
|
+
? {
|
|
101
|
+
correlationId: {
|
|
102
|
+
DataType: 'String',
|
|
103
|
+
StringValue: executionContext_1.default.getCorrelationId(),
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
: {};
|
|
97
107
|
await __classPrivateFieldGet(this, _SnsSqs_snsClient, "f").publish({
|
|
98
108
|
TopicArn: topicArn,
|
|
99
109
|
Message: JSON.stringify({
|
|
100
110
|
eventData,
|
|
111
|
+
messageId,
|
|
101
112
|
context: executionContext_1.default.getFullData(),
|
|
102
113
|
}),
|
|
103
114
|
MessageAttributes: {
|
|
104
|
-
|
|
105
|
-
DataType: 'String',
|
|
106
|
-
StringValue: executionContext_1.default.getCorrelationId(),
|
|
107
|
-
}
|
|
115
|
+
...messageAttributes
|
|
108
116
|
}
|
|
109
117
|
}).promise();
|
|
110
118
|
logger.generic.info("Message published to SNS topic");
|
|
@@ -124,44 +132,58 @@ class SnsSqs {
|
|
|
124
132
|
const params = {
|
|
125
133
|
QueueUrl: queueUrl,
|
|
126
134
|
WaitTimeSeconds: 20,
|
|
127
|
-
VisibilityTimeout:
|
|
128
|
-
MaxNumberOfMessages:
|
|
135
|
+
VisibilityTimeout: 20,
|
|
136
|
+
MaxNumberOfMessages: 10
|
|
129
137
|
};
|
|
130
138
|
const data = await __classPrivateFieldGet(this, _SnsSqs_sqsClient, "f").receiveMessage(params).promise();
|
|
131
139
|
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
|
-
}
|
|
140
|
+
await this.processMessagesInParallel(data.Messages, onMessage, topicName, queueName, queueUrl);
|
|
158
141
|
}
|
|
159
142
|
}
|
|
160
143
|
};
|
|
161
144
|
__classPrivateFieldGet(this, _SnsSqs_promises, "f").push(consumeLoop().catch(e => {
|
|
162
|
-
__classPrivateFieldGet(this, _SnsSqs_logger, "f").
|
|
145
|
+
__classPrivateFieldGet(this, _SnsSqs_logger, "f").withParams({
|
|
146
|
+
serviceBroker: {
|
|
147
|
+
queueName,
|
|
148
|
+
topicName
|
|
149
|
+
}
|
|
150
|
+
}).generic.error(`Consumer fatal error\nerror: |${this.serializeError(e)}|`, e);
|
|
163
151
|
}));
|
|
164
152
|
}
|
|
153
|
+
async processMessagesInParallel(messages, onMessage, topicName, queueName, queueUrl) {
|
|
154
|
+
const processMessage = async (message) => {
|
|
155
|
+
let logger = __classPrivateFieldGet(this, _SnsSqs_logger, "f");
|
|
156
|
+
try {
|
|
157
|
+
const messageBody = JSON.parse(message.Body);
|
|
158
|
+
const { eventData, messageId, context } = JSON.parse(messageBody.Message);
|
|
159
|
+
executionContext_1.default.setFullData(context);
|
|
160
|
+
const startTime = process.hrtime();
|
|
161
|
+
logger = logger.withParams({
|
|
162
|
+
messageId,
|
|
163
|
+
correlationId: executionContext_1.default.getCorrelationId(),
|
|
164
|
+
login: executionContext_1.default.getAuthorizedUserLogin(),
|
|
165
|
+
serviceBroker: { topicName, queueName },
|
|
166
|
+
});
|
|
167
|
+
logger.generic.info("Consuming started");
|
|
168
|
+
await onMessage(eventData, { logger });
|
|
169
|
+
const diff = process.hrtime(startTime);
|
|
170
|
+
const timeInMilliseconds = diff[0] * 1000 + diff[1] / 1000000;
|
|
171
|
+
logger.generic.info("Consuming finished", { taskDuration: timeInMilliseconds });
|
|
172
|
+
await __classPrivateFieldGet(this, _SnsSqs_sqsClient, "f").deleteMessage({
|
|
173
|
+
QueueUrl: queueUrl,
|
|
174
|
+
ReceiptHandle: message.ReceiptHandle
|
|
175
|
+
}).promise();
|
|
176
|
+
}
|
|
177
|
+
catch (e) {
|
|
178
|
+
logger.generic.error(`Consuming error\nerror: |${this.serializeError(e)}|\nobject: |${message.Body}|`, e);
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
const messageProcessingPromises = messages.map(processMessage);
|
|
182
|
+
await Promise.allSettled(messageProcessingPromises);
|
|
183
|
+
}
|
|
184
|
+
serializeError(e) {
|
|
185
|
+
return JSON.stringify(e, Object.getOwnPropertyNames(e));
|
|
186
|
+
}
|
|
165
187
|
async createTopic(topicName) {
|
|
166
188
|
if (!__classPrivateFieldGet(this, _SnsSqs_createdTopics, "f").has(topicName)) {
|
|
167
189
|
__classPrivateFieldGet(this, _SnsSqs_logger, "f").generic.info('Creating topic', {
|
|
@@ -236,6 +258,17 @@ class SnsSqs {
|
|
|
236
258
|
AttributeNames: ['QueueArn']
|
|
237
259
|
}).promise();
|
|
238
260
|
const queueArn = queueAttributes.QueueArn;
|
|
261
|
+
const subscriptions = await __classPrivateFieldGet(this, _SnsSqs_snsClient, "f").listSubscriptionsByTopic({ TopicArn: topicArn }).promise();
|
|
262
|
+
const isAlreadySubscribed = subscriptions.Subscriptions.some(subscription => subscription.Endpoint === queueArn);
|
|
263
|
+
if (isAlreadySubscribed) {
|
|
264
|
+
__classPrivateFieldGet(this, _SnsSqs_logger, "f").generic.debug('Queue is already subscribed to the topic', {
|
|
265
|
+
serviceBroker: {
|
|
266
|
+
queueName,
|
|
267
|
+
topicName
|
|
268
|
+
}
|
|
269
|
+
});
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
239
272
|
// Subscribe the queue to the topic
|
|
240
273
|
await __classPrivateFieldGet(this, _SnsSqs_snsClient, "f").subscribe({
|
|
241
274
|
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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"}
|