@tickrorg/common 1.0.15 → 1.0.16
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/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/services/consumer.d.ts +3 -6
- package/dist/services/consumer.d.ts.map +1 -1
- package/dist/services/consumer.js +48 -21
- package/dist/services/consumer.js.map +1 -1
- package/dist/services/kafka.d.ts +12 -0
- package/dist/services/kafka.d.ts.map +1 -0
- package/dist/services/kafka.js +39 -0
- package/dist/services/kafka.js.map +1 -0
- package/dist/services/publisher.d.ts +1 -4
- package/dist/services/publisher.d.ts.map +1 -1
- package/dist/services/publisher.js +6 -5
- package/dist/services/publisher.js.map +1 -1
- package/package.json +3 -3
- package/dist/services/rabbitmq.d.ts +0 -12
- package/dist/services/rabbitmq.d.ts.map +0 -1
- package/dist/services/rabbitmq.js +0 -44
- package/dist/services/rabbitmq.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export * from "./middlewares/require-auth";
|
|
|
11
11
|
export * from "./middlewares/validate-request";
|
|
12
12
|
export * from "./middlewares/require-role";
|
|
13
13
|
export * from "./services/token";
|
|
14
|
-
export * from "./services/
|
|
14
|
+
export * from "./services/kafka";
|
|
15
15
|
export * from "./services/publisher";
|
|
16
16
|
export * from "./services/consumer";
|
|
17
17
|
export * from "./types/events";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AAEzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAE3C,cAAc,kBAAkB,CAAC;AAEjC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AAEzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAE3C,cAAc,kBAAkB,CAAC;AAEjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -11,7 +11,7 @@ export * from "./middlewares/require-auth";
|
|
|
11
11
|
export * from "./middlewares/validate-request";
|
|
12
12
|
export * from "./middlewares/require-role";
|
|
13
13
|
export * from "./services/token";
|
|
14
|
-
export * from "./services/
|
|
14
|
+
export * from "./services/kafka";
|
|
15
15
|
export * from "./services/publisher";
|
|
16
16
|
export * from "./services/consumer";
|
|
17
17
|
export * from "./types/events";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AAEzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAE3C,cAAc,kBAAkB,CAAC;AAEjC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AAEzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAE3C,cAAc,kBAAkB,CAAC;AAEjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAA"}
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import { Channel, ConsumeMessage } from "amqplib";
|
|
2
1
|
import { Event } from "../types/events";
|
|
3
2
|
export declare abstract class Consumer<T extends Event> {
|
|
4
|
-
abstract
|
|
5
|
-
abstract
|
|
6
|
-
abstract onMessage(data: T["data"]
|
|
7
|
-
protected channel: Channel;
|
|
8
|
-
constructor(channel: Channel);
|
|
3
|
+
abstract topic: T["subject"];
|
|
4
|
+
abstract groupId: string;
|
|
5
|
+
abstract onMessage(data: T["data"]): Promise<void>;
|
|
9
6
|
listen(): Promise<void>;
|
|
10
7
|
}
|
|
11
8
|
//# sourceMappingURL=consumer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consumer.d.ts","sourceRoot":"","sources":["../../src/services/consumer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"consumer.d.ts","sourceRoot":"","sources":["../../src/services/consumer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGxC,8BAAsB,QAAQ,CAAC,CAAC,SAAS,KAAK;IAC5C,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAE5C,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAoE9B"}
|
|
@@ -1,28 +1,55 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { kafkaClient } from "./kafka";
|
|
2
2
|
export class Consumer {
|
|
3
|
-
constructor(channel) {
|
|
4
|
-
this.channel = channel;
|
|
5
|
-
}
|
|
6
3
|
async listen() {
|
|
7
|
-
const
|
|
8
|
-
|
|
4
|
+
const consumer = kafkaClient.getConsumer(this.groupId, {
|
|
5
|
+
retry: {
|
|
6
|
+
retries: 3,
|
|
7
|
+
},
|
|
8
|
+
});
|
|
9
|
+
const producer = kafkaClient.getProducer();
|
|
10
|
+
await consumer.connect();
|
|
11
|
+
await producer.connect();
|
|
12
|
+
await consumer.subscribe({
|
|
13
|
+
topic: this.topic,
|
|
14
|
+
fromBeginning: true,
|
|
9
15
|
});
|
|
10
|
-
await
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
16
|
+
await consumer.run({
|
|
17
|
+
eachMessage: async ({ message, partition }) => {
|
|
18
|
+
if (!message.value)
|
|
19
|
+
return;
|
|
20
|
+
try {
|
|
21
|
+
const parsed = JSON.parse(message.value.toString());
|
|
22
|
+
await this.onMessage(parsed);
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
console.error(`[kafka] error in group ${this.groupId} on topic ${this.topic}`, err);
|
|
26
|
+
try {
|
|
27
|
+
await producer.send({
|
|
28
|
+
topic: `${this.topic}.dlq`,
|
|
29
|
+
acks: -1,
|
|
30
|
+
messages: [
|
|
31
|
+
{
|
|
32
|
+
key: message.key,
|
|
33
|
+
value: message.value,
|
|
34
|
+
headers: {
|
|
35
|
+
error: err instanceof Error ? err.message : "Unknown error",
|
|
36
|
+
originalTopic: this.topic,
|
|
37
|
+
originalPartition: partition.toString(),
|
|
38
|
+
originalOffset: message.offset,
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
});
|
|
43
|
+
console.info(`[kafka] successfully pushed failed message to DLQ: ${this.topic}.dlq`);
|
|
44
|
+
}
|
|
45
|
+
catch (dlqErr) {
|
|
46
|
+
console.error(`[kafka] CRITICAL: Failed to push message to DLQ`, dlqErr);
|
|
47
|
+
throw dlqErr;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
},
|
|
24
51
|
});
|
|
25
|
-
console.info(`[
|
|
52
|
+
console.info(`[kafka] consuming topic ${this.topic} (group: ${this.groupId})`);
|
|
26
53
|
}
|
|
27
54
|
}
|
|
28
55
|
//# sourceMappingURL=consumer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consumer.js","sourceRoot":"","sources":["../../src/services/consumer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"consumer.js","sourceRoot":"","sources":["../../src/services/consumer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,MAAM,OAAgB,QAAQ;IAK5B,KAAK,CAAC,MAAM;QACV,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE;YACrD,KAAK,EAAE;gBACL,OAAO,EAAE,CAAC;aACX;SACF,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;QAE3C,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;QACzB,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;QAEzB,MAAM,QAAQ,CAAC,SAAS,CAAC;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;QAEH,MAAM,QAAQ,CAAC,GAAG,CAAC;YACjB,WAAW,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE;gBAC5C,IAAI,CAAC,OAAO,CAAC,KAAK;oBAAE,OAAO;gBAE3B,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAc,CAAC;oBAEjE,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC/B,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,KAAK,CACX,0BAA0B,IAAI,CAAC,OAAO,aAAa,IAAI,CAAC,KAAK,EAAE,EAC/D,GAAG,CACJ,CAAC;oBAEF,IAAI,CAAC;wBACH,MAAM,QAAQ,CAAC,IAAI,CAAC;4BAClB,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,MAAM;4BAC1B,IAAI,EAAE,CAAC,CAAC;4BACR,QAAQ,EAAE;gCACR;oCACE,GAAG,EAAE,OAAO,CAAC,GAAG;oCAChB,KAAK,EAAE,OAAO,CAAC,KAAK;oCACpB,OAAO,EAAE;wCACP,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;wCAC3D,aAAa,EAAE,IAAI,CAAC,KAAK;wCACzB,iBAAiB,EAAE,SAAS,CAAC,QAAQ,EAAE;wCACvC,cAAc,EAAE,OAAO,CAAC,MAAM;qCAC/B;iCACF;6BACF;yBACF,CAAC,CAAC;wBAEH,OAAO,CAAC,IAAI,CACV,sDAAsD,IAAI,CAAC,KAAK,MAAM,CACvE,CAAC;oBACJ,CAAC;oBAAC,OAAO,MAAM,EAAE,CAAC;wBAChB,OAAO,CAAC,KAAK,CACX,iDAAiD,EACjD,MAAM,CACP,CAAC;wBAEF,MAAM,MAAM,CAAC;oBACf,CAAC;gBACH,CAAC;YACH,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CACV,2BAA2B,IAAI,CAAC,KAAK,YAAY,IAAI,CAAC,OAAO,GAAG,CACjE,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Producer, Consumer } from "kafkajs";
|
|
2
|
+
declare class KafkaService {
|
|
3
|
+
private kafka;
|
|
4
|
+
private producer;
|
|
5
|
+
connect(broker: string): Promise<void>;
|
|
6
|
+
getConsumer(groupId: string, config?: any): Consumer;
|
|
7
|
+
getProducer(): Producer;
|
|
8
|
+
close(): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare const kafkaClient: KafkaService;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=kafka.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kafka.d.ts","sourceRoot":"","sources":["../../src/services/kafka.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,QAAQ,EAAE,QAAQ,EAAY,MAAM,SAAS,CAAC;AAE9D,cAAM,YAAY;IAChB,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,QAAQ,CAAyB;IAEnC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5C,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,QAAQ;IAKpD,WAAW,IAAI,QAAQ;IAKjB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ7B;AAED,eAAO,MAAM,WAAW,cAAqB,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Kafka, logLevel } from "kafkajs";
|
|
2
|
+
class KafkaService {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.kafka = null;
|
|
5
|
+
this.producer = null;
|
|
6
|
+
}
|
|
7
|
+
async connect(broker) {
|
|
8
|
+
if (this.producer)
|
|
9
|
+
return;
|
|
10
|
+
this.kafka = new Kafka({
|
|
11
|
+
clientId: "tickrorg-service",
|
|
12
|
+
brokers: [broker],
|
|
13
|
+
logLevel: logLevel.ERROR,
|
|
14
|
+
});
|
|
15
|
+
this.producer = this.kafka.producer();
|
|
16
|
+
await this.producer.connect();
|
|
17
|
+
}
|
|
18
|
+
getConsumer(groupId, config) {
|
|
19
|
+
if (!this.kafka)
|
|
20
|
+
throw new Error("Kafka not initialized");
|
|
21
|
+
return this.kafka.consumer({ groupId, ...config });
|
|
22
|
+
}
|
|
23
|
+
getProducer() {
|
|
24
|
+
if (!this.producer)
|
|
25
|
+
throw new Error("Kafka not initialized");
|
|
26
|
+
return this.producer;
|
|
27
|
+
}
|
|
28
|
+
async close() {
|
|
29
|
+
try {
|
|
30
|
+
await this.producer?.disconnect();
|
|
31
|
+
}
|
|
32
|
+
finally {
|
|
33
|
+
this.producer = null;
|
|
34
|
+
this.kafka = null;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export const kafkaClient = new KafkaService();
|
|
39
|
+
//# sourceMappingURL=kafka.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kafka.js","sourceRoot":"","sources":["../../src/services/kafka.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAsB,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE9D,MAAM,YAAY;IAAlB;QACU,UAAK,GAAiB,IAAI,CAAC;QAC3B,aAAQ,GAAoB,IAAI,CAAC;IAkC3C,CAAC;IAhCC,KAAK,CAAC,OAAO,CAAC,MAAc;QAC1B,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE1B,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC;YACrB,QAAQ,EAAE,kBAAkB;YAC5B,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,QAAQ,EAAE,QAAQ,CAAC,KAAK;SACzB,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC;IAGD,WAAW,CAAC,OAAe,EAAE,MAAY;QACvC,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC;QACpC,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,YAAY,EAAE,CAAC"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import { Channel } from "amqplib";
|
|
2
1
|
import { Event } from "../types/events";
|
|
3
2
|
export declare abstract class Publisher<T extends Event> {
|
|
4
|
-
|
|
5
|
-
abstract subject: T["subject"];
|
|
6
|
-
constructor(channel: Channel);
|
|
3
|
+
abstract topic: T["subject"];
|
|
7
4
|
publish(data: T["data"]): Promise<void>;
|
|
8
5
|
}
|
|
9
6
|
//# sourceMappingURL=publisher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../src/services/publisher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../src/services/publisher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,8BAAsB,SAAS,CAAC,CAAC,SAAS,KAAK;IAC7C,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;IAEvB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAQ9C"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { kafkaClient } from "./kafka";
|
|
2
2
|
export class Publisher {
|
|
3
|
-
constructor(channel) {
|
|
4
|
-
this.channel = channel;
|
|
5
|
-
}
|
|
6
3
|
async publish(data) {
|
|
7
|
-
|
|
4
|
+
const producer = kafkaClient.getProducer();
|
|
5
|
+
await producer.send({
|
|
6
|
+
topic: this.topic,
|
|
7
|
+
messages: [{ value: JSON.stringify(data) }],
|
|
8
|
+
});
|
|
8
9
|
}
|
|
9
10
|
}
|
|
10
11
|
//# sourceMappingURL=publisher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publisher.js","sourceRoot":"","sources":["../../src/services/publisher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"publisher.js","sourceRoot":"","sources":["../../src/services/publisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGtC,MAAM,OAAgB,SAAS;IAG7B,KAAK,CAAC,OAAO,CAAC,IAAe;QAC3B,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;QAE3C,MAAM,QAAQ,CAAC,IAAI,CAAC;YAClB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;SAC5C,CAAC,CAAC;IACL,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tickrorg/common",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.16",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"author": "",
|
|
@@ -18,11 +18,11 @@
|
|
|
18
18
|
"pub": "git add . && git commit -m 'update' && npm version patch && npm publish"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"amqplib": "^2.2.0",
|
|
22
21
|
"cookie-parser": "^1.4.7",
|
|
23
22
|
"express": "^5.2.1",
|
|
24
23
|
"express-validator": "^7.3.2",
|
|
25
|
-
"jsonwebtoken": "^9.0.3"
|
|
24
|
+
"jsonwebtoken": "^9.0.3",
|
|
25
|
+
"kafkajs": "^2.2.4"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/amqplib": "^0.10.8",
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Channel } from "amqplib";
|
|
2
|
-
export declare const EXCHANGE_NAME = "tickrorg.events";
|
|
3
|
-
declare class RabbitMQ {
|
|
4
|
-
private connection;
|
|
5
|
-
private channel;
|
|
6
|
-
connect(url: string): Promise<Channel>;
|
|
7
|
-
getChannel(): Channel;
|
|
8
|
-
close(): Promise<void>;
|
|
9
|
-
}
|
|
10
|
-
export declare const rabbit: RabbitMQ;
|
|
11
|
-
export {};
|
|
12
|
-
//# sourceMappingURL=rabbitmq.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rabbitmq.d.ts","sourceRoot":"","sources":["../../src/services/rabbitmq.ts"],"names":[],"mappings":"AAAA,OAAa,EAAE,OAAO,EAAgB,MAAM,SAAS,CAAC;AAEtD,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAE/C,cAAM,QAAQ;IACZ,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,OAAO,CAAwB;IAEjC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAwB5C,UAAU,IAAI,OAAO;IAKf,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAS7B;AAED,eAAO,MAAM,MAAM,UAAiB,CAAC"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import amqp from "amqplib";
|
|
2
|
-
export const EXCHANGE_NAME = "tickrorg.events";
|
|
3
|
-
class RabbitMQ {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.connection = null;
|
|
6
|
-
this.channel = null;
|
|
7
|
-
}
|
|
8
|
-
async connect(url) {
|
|
9
|
-
if (this.channel)
|
|
10
|
-
return this.channel;
|
|
11
|
-
this.connection = await amqp.connect(url);
|
|
12
|
-
this.channel = await this.connection.createChannel();
|
|
13
|
-
await this.channel.assertExchange(EXCHANGE_NAME, "topic", {
|
|
14
|
-
durable: true,
|
|
15
|
-
});
|
|
16
|
-
this.connection.on("close", () => {
|
|
17
|
-
this.connection = null;
|
|
18
|
-
this.channel = null;
|
|
19
|
-
console.warn("[rabbitmq] connection closed");
|
|
20
|
-
});
|
|
21
|
-
this.connection.on("error", (err) => {
|
|
22
|
-
console.error("[rabbitmq] connection error", err);
|
|
23
|
-
});
|
|
24
|
-
console.info("[rabbitmq] connected");
|
|
25
|
-
return this.channel;
|
|
26
|
-
}
|
|
27
|
-
getChannel() {
|
|
28
|
-
if (!this.channel)
|
|
29
|
-
throw new Error("RabbitMQ not connected");
|
|
30
|
-
return this.channel;
|
|
31
|
-
}
|
|
32
|
-
async close() {
|
|
33
|
-
try {
|
|
34
|
-
await this.channel?.close();
|
|
35
|
-
await this.connection?.close();
|
|
36
|
-
}
|
|
37
|
-
finally {
|
|
38
|
-
this.channel = null;
|
|
39
|
-
this.connection = null;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
export const rabbit = new RabbitMQ();
|
|
44
|
-
//# sourceMappingURL=rabbitmq.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rabbitmq.js","sourceRoot":"","sources":["../../src/services/rabbitmq.ts"],"names":[],"mappings":"AAAA,OAAO,IAA+B,MAAM,SAAS,CAAC;AAEtD,MAAM,CAAC,MAAM,aAAa,GAAG,iBAAiB,CAAC;AAE/C,MAAM,QAAQ;IAAd;QACU,eAAU,GAAwB,IAAI,CAAC;QACvC,YAAO,GAAmB,IAAI,CAAC;IAwCzC,CAAC;IAtCC,KAAK,CAAC,OAAO,CAAC,GAAW;QACvB,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC;QAEtC,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QAErD,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,aAAa,EAAE,OAAO,EAAE;YACxD,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAClC,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,UAAU;QACR,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;QACjC,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC"}
|