@apipass/sqs-server 0.0.45 → 0.0.47
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.
- package/lib/sqs-server.d.ts +2 -5
- package/lib/sqs-server.js +15 -66
- package/lib/sqs-server.js.map +1 -1
- package/package.json +5 -4
package/lib/sqs-server.d.ts
CHANGED
|
@@ -1,19 +1,16 @@
|
|
|
1
1
|
import { type CustomTransportStrategy, Server } from '@nestjs/microservices';
|
|
2
2
|
import { type SqsOptions } from './sqs-options.interface';
|
|
3
3
|
export declare class SQSServer extends Server implements CustomTransportStrategy {
|
|
4
|
+
private readonly sqsOptions;
|
|
4
5
|
private readonly options;
|
|
5
|
-
static QUEUE_NAME_ALREADY_EXISTS_MSG: string;
|
|
6
6
|
private readonly sqsClient;
|
|
7
7
|
private readonly snsClient;
|
|
8
8
|
private consumers;
|
|
9
9
|
private registeredQueues;
|
|
10
|
-
constructor(
|
|
10
|
+
constructor(sqsOptions: SqsOptions);
|
|
11
11
|
listen(callback: () => any): Promise<any>;
|
|
12
12
|
private bindHandlers;
|
|
13
13
|
private handle;
|
|
14
14
|
private createAwsResources;
|
|
15
|
-
private createSubscriptionIfNotExists;
|
|
16
|
-
private createTopicIfNotExists;
|
|
17
|
-
private createQueueIfNotExist;
|
|
18
15
|
close(): any;
|
|
19
16
|
}
|
package/lib/sqs-server.js
CHANGED
|
@@ -26,11 +26,13 @@ const sqs_consumer_1 = require("sqs-consumer");
|
|
|
26
26
|
const sqs_context_1 = require("./sqs-context");
|
|
27
27
|
const client_sqs_1 = require("@aws-sdk/client-sqs");
|
|
28
28
|
const client_sns_1 = require("@aws-sdk/client-sns");
|
|
29
|
+
const sqs_common_1 = require("@apipass/sqs-common");
|
|
29
30
|
class SQSServer extends microservices_1.Server {
|
|
30
|
-
constructor(
|
|
31
|
+
constructor(sqsOptions) {
|
|
31
32
|
var _a, _b;
|
|
32
33
|
super();
|
|
33
|
-
this.
|
|
34
|
+
this.sqsOptions = sqsOptions;
|
|
35
|
+
this.options = sqsOptions;
|
|
34
36
|
this.sqsClient = (_a = this.options.sqs) !== null && _a !== void 0 ? _a : new client_sqs_1.SQSClient();
|
|
35
37
|
this.snsClient = (_b = this.options.sns) !== null && _b !== void 0 ? _b : new client_sns_1.SNSClient();
|
|
36
38
|
this.consumers = [];
|
|
@@ -87,69 +89,17 @@ class SQSServer extends microservices_1.Server {
|
|
|
87
89
|
createAwsResources(queueName, handler) {
|
|
88
90
|
return __awaiter(this, void 0, void 0, function* () {
|
|
89
91
|
var _a, _b;
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
const input = {
|
|
102
|
-
TopicArn: topicArn,
|
|
103
|
-
Protocol: 'sqs',
|
|
104
|
-
Endpoint: `arn:aws:sqs:${this.options.region}:${this.options.accountId}:${queueName}`,
|
|
105
|
-
Attributes: {
|
|
106
|
-
RawMessageDelivery: 'true'
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
if (filter) {
|
|
110
|
-
input.Attributes.FilterPolicyScope = 'MessageAttributes';
|
|
111
|
-
input.Attributes.FilterPolicy = JSON.stringify(filter);
|
|
112
|
-
}
|
|
113
|
-
yield this.snsClient.send(new client_sns_1.SubscribeCommand(input));
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
createTopicIfNotExists(topicName) {
|
|
117
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
118
|
-
const input = {
|
|
119
|
-
Name: topicName
|
|
120
|
-
};
|
|
121
|
-
const result = yield this.snsClient.send(new client_sns_1.CreateTopicCommand(input));
|
|
122
|
-
return result.TopicArn;
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
createQueueIfNotExist(queueName) {
|
|
126
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
127
|
-
const params = {
|
|
128
|
-
QueueName: queueName,
|
|
129
|
-
Attributes: {
|
|
130
|
-
Policy: JSON.stringify({
|
|
131
|
-
Statement: [{
|
|
132
|
-
Effect: 'Allow',
|
|
133
|
-
Principal: {
|
|
134
|
-
Service: 'sns.amazonaws.com'
|
|
135
|
-
},
|
|
136
|
-
Action: 'SQS:SendMessage',
|
|
137
|
-
Resource: `arn:aws:sqs:${this.options.region}:${this.options.accountId}:${queueName}`
|
|
138
|
-
}]
|
|
139
|
-
})
|
|
140
|
-
}
|
|
141
|
-
};
|
|
142
|
-
try {
|
|
143
|
-
yield this.sqsClient.send(new client_sqs_1.CreateQueueCommand(params));
|
|
144
|
-
}
|
|
145
|
-
catch (e) {
|
|
146
|
-
if ('QueueAlreadyExists' === e.Code && SQSServer.QUEUE_NAME_ALREADY_EXISTS_MSG === e.message) {
|
|
147
|
-
console.info(`${queueName}: ${SQSServer.QUEUE_NAME_ALREADY_EXISTS_MSG}`);
|
|
148
|
-
}
|
|
149
|
-
else {
|
|
150
|
-
throw e;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
92
|
+
const sqsServerCommons = new sqs_common_1.SQSServerCommons({
|
|
93
|
+
sns: this.snsClient,
|
|
94
|
+
sqs: this.sqsClient,
|
|
95
|
+
region: this.options.region,
|
|
96
|
+
accountId: this.options.accountId
|
|
97
|
+
});
|
|
98
|
+
yield sqsServerCommons.createAwsResources({
|
|
99
|
+
queueName: queueName,
|
|
100
|
+
topicName: (_a = handler.extras) === null || _a === void 0 ? void 0 : _a.topic,
|
|
101
|
+
subscriptionFilter: (_b = handler.extras) === null || _b === void 0 ? void 0 : _b.filter
|
|
102
|
+
});
|
|
153
103
|
});
|
|
154
104
|
}
|
|
155
105
|
close() {
|
|
@@ -161,5 +111,4 @@ class SQSServer extends microservices_1.Server {
|
|
|
161
111
|
}
|
|
162
112
|
}
|
|
163
113
|
exports.SQSServer = SQSServer;
|
|
164
|
-
SQSServer.QUEUE_NAME_ALREADY_EXISTS_MSG = 'A queue already exists with the same name and a different value for attribute Policy';
|
|
165
114
|
//# sourceMappingURL=sqs-server.js.map
|
package/lib/sqs-server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqs-server.js","sourceRoot":"","sources":["../src/sqs-server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAAiG;AACjG,+CAAuC;AAEvC,+CAA0C;AAC1C,
|
|
1
|
+
{"version":3,"file":"sqs-server.js","sourceRoot":"","sources":["../src/sqs-server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apipass/sqs-server",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.47",
|
|
4
4
|
"description": "> TODO: description",
|
|
5
5
|
"author": "Alexandre Zanelatto <alexandre@apipass.com.br>",
|
|
6
6
|
"license": "ISC",
|
|
@@ -11,8 +11,9 @@
|
|
|
11
11
|
"test": "__tests__"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@
|
|
15
|
-
"
|
|
14
|
+
"@apipass/sqs-common": "0.0.42",
|
|
15
|
+
"@aws-sdk/client-sns": "3.731.1",
|
|
16
|
+
"sqs-consumer": "11.4.0"
|
|
16
17
|
},
|
|
17
18
|
"devDependencies": {
|
|
18
19
|
"@nestjs/microservices": "9.2.1"
|
|
@@ -27,5 +28,5 @@
|
|
|
27
28
|
"tsc": "tsc",
|
|
28
29
|
"test": "node ./__tests__/@apipass/sqs-server.test.js"
|
|
29
30
|
},
|
|
30
|
-
"gitHead": "
|
|
31
|
+
"gitHead": "868e34e65885fd79b91c652fc43be35fc68e9a08"
|
|
31
32
|
}
|