@rsdk/kafka.transport 2.4.3 → 2.5.0

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/CHANGELOG.md CHANGED
@@ -3,6 +3,16 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [2.5.0](https://github.com/R-Vision/rsdk/compare/v2.4.4-next.0...v2.5.0) (2023-06-23)
7
+
8
+ ### Features
9
+
10
+ * **kafka.transport:** added partitionsConsumedConcurrently to options ([bce619e](https://github.com/R-Vision/rsdk/commit/bce619e135e46fd4389322160150152a9d328cd3))
11
+
12
+ ## [2.4.4-next.0](https://github.com/R-Vision/rsdk/compare/v2.4.3...v2.4.4-next.0) (2023-06-22)
13
+
14
+ **Note:** Version bump only for package @rsdk/kafka.transport
15
+
6
16
  ## [2.4.3](https://github.com/R-Vision/rsdk/compare/v2.4.3-next.0...v2.4.3) (2023-06-21)
7
17
 
8
18
  **Note:** Version bump only for package @rsdk/kafka.transport
@@ -2,6 +2,30 @@ import type { MicroserviceOptions } from '@nestjs/microservices';
2
2
  import type { ConfigContext, IErrorsFormatter, IErrorsTransformer, IMicroserviceTransport, NestModuleDefinitions } from '@rsdk/core';
3
3
  export interface KafkaTransportOptions {
4
4
  autoCommit?: boolean;
5
+ /**
6
+ * По умолчанию все обработчики работают синхронно, то есть в случае
7
+ * @example
8
+ * class Controller {
9
+ * // @Consume(ActionOneEvent)
10
+ * actionOne() {}
11
+ *
12
+ * // @Consume(ActionTwoEvent)
13
+ * actionTwo() {}}
14
+ * }
15
+ *
16
+ * // Обработчик `actionTwo` не будет запущен до тех пор, пока не завершен обработчик `actionOne` и наоборот
17
+ * // Более того пока не завершена обработка одного из событий, не будет начата обработка следующего
18
+ * // Как пример это происходит вот так
19
+ *
20
+ * for await (const event of events) {
21
+ * await handle(event)
22
+ * }
23
+ *
24
+ * // Изменение этого параметра как бы добавит rate limit одновременно запущенных обработчиков пример https://github.com/nats-io/nats.deno/blob/main/jetstream.md#:~:text=Here%27s%20a%20solution%20that%20introduces%20a%20rate%20limiter%3A
25
+ * // Важно понимать что на всё приложение consumer ровно один, соответственно изменение этого параметра влияет на вообще все обработчики событий
26
+ * // https://kafka.js.org/docs/1.12.0/consuming#a-name-concurrent-processing-a-partition-aware-concurrency
27
+ */
28
+ partitionsConsumedConcurrently?: number;
5
29
  }
6
30
  export declare class KafkaTransport implements IMicroserviceTransport {
7
31
  private readonly options?;
@@ -49,6 +49,9 @@ class KafkaTransport {
49
49
  },
50
50
  run: {
51
51
  autoCommit: this.options?.autoCommit ?? true,
52
+ ...(this.options?.partitionsConsumedConcurrently !== undefined && {
53
+ partitionsConsumedConcurrently: this.options?.partitionsConsumedConcurrently,
54
+ }),
52
55
  },
53
56
  }),
54
57
  };
@@ -1 +1 @@
1
- {"version":3,"file":"kafka.transport.js","sourceRoot":"","sources":["../src/kafka.transport.ts"],"names":[],"mappings":";;;AACA,oFAA0E;AAQ1E,gEAA6D;AAC7D,qDAAsE;AACtE,2CAA8C;AAE9C,4EAAuE;AACvE,sFAAiF;AACjF,qEAAgE;AAQhE,cAAc;AACd,MAAa,cAAc;IAII;IAHrB,MAAM,GAAG,uBAAa,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAC9C,OAAO,CAAY;IAE3B,YAA6B,OAA+B;QAA/B,YAAO,GAAP,OAAO,CAAwB;IAAG,CAAC;IAEhE,OAAO;QACL,OAAO,CAAC,6CAAoB,CAAC,CAAC;IAChC,CAAC;IAED,yBAAyB;QACvB,qDAAqD;QACrD,MAAM,EAAE,IAAI,EAAE,GAAG,mBAAQ,CAAC,OAAO,EAAE,CAAC;QAEpC,OAAO;YACL,QAAQ,EAAE,IAAI,yCAAkB,CAAC;gBAC/B,MAAM,EAAE;oBACN,kDAAkD;oBAClD,OAAO,EAAE,IAAI,CAAC,OAAQ;oBACtB,QAAQ,EAAE,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE;oBAClC,UAAU,EAAE,IAAA,kCAAmB,EAC7B,uBAAa,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAC5C;oBACD,QAAQ,EAAE,0BAAQ,CAAC,KAAK;iBACzB;gBACD,QAAQ,EAAE;oBACR,sBAAsB,EAAE,KAAK;oBAC7B,OAAO,EAAE,IAAI;oBACb,KAAK,EAAE;wBACL,OAAO,EAAE,MAAM,CAAC,iBAAiB;qBAClC;iBACF;gBACD,MAAM,EAAE;oBACN,UAAU,EAAE,IAAI;iBACjB;gBACD,QAAQ,EAAE;oBACR,sBAAsB,EAAE,KAAK;oBAC7B,KAAK,EAAE;wBACL,OAAO,EAAE,MAAM,CAAC,iBAAiB;qBAClC;iBACF;gBACD,GAAG,EAAE;oBACH,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,IAAI,IAAI;iBAC7C;aACF,CAAC;SACH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,aAA4B;QAC/B,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,0BAAW,CAAC,CAAC;QAEvD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,OAAO;QACL,kDAAkD;QAClD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,OAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,WAAW;QACT,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,6CAAoB,EAAE,CAAC;IACpC,CAAC;IAED,oBAAoB;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAtED,wCAsEC"}
1
+ {"version":3,"file":"kafka.transport.js","sourceRoot":"","sources":["../src/kafka.transport.ts"],"names":[],"mappings":";;;AACA,oFAA0E;AAQ1E,gEAA6D;AAC7D,qDAAsE;AACtE,2CAA8C;AAE9C,4EAAuE;AACvE,sFAAiF;AACjF,qEAAgE;AAiChE,cAAc;AACd,MAAa,cAAc;IAII;IAHrB,MAAM,GAAG,uBAAa,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAC9C,OAAO,CAAY;IAE3B,YAA6B,OAA+B;QAA/B,YAAO,GAAP,OAAO,CAAwB;IAAG,CAAC;IAEhE,OAAO;QACL,OAAO,CAAC,6CAAoB,CAAC,CAAC;IAChC,CAAC;IAED,yBAAyB;QACvB,qDAAqD;QACrD,MAAM,EAAE,IAAI,EAAE,GAAG,mBAAQ,CAAC,OAAO,EAAE,CAAC;QAEpC,OAAO;YACL,QAAQ,EAAE,IAAI,yCAAkB,CAAC;gBAC/B,MAAM,EAAE;oBACN,kDAAkD;oBAClD,OAAO,EAAE,IAAI,CAAC,OAAQ;oBACtB,QAAQ,EAAE,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE;oBAClC,UAAU,EAAE,IAAA,kCAAmB,EAC7B,uBAAa,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAC5C;oBACD,QAAQ,EAAE,0BAAQ,CAAC,KAAK;iBACzB;gBACD,QAAQ,EAAE;oBACR,sBAAsB,EAAE,KAAK;oBAC7B,OAAO,EAAE,IAAI;oBACb,KAAK,EAAE;wBACL,OAAO,EAAE,MAAM,CAAC,iBAAiB;qBAClC;iBACF;gBACD,MAAM,EAAE;oBACN,UAAU,EAAE,IAAI;iBACjB;gBACD,QAAQ,EAAE;oBACR,sBAAsB,EAAE,KAAK;oBAC7B,KAAK,EAAE;wBACL,OAAO,EAAE,MAAM,CAAC,iBAAiB;qBAClC;iBACF;gBACD,GAAG,EAAE;oBACH,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,IAAI,IAAI;oBAC5C,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,8BAA8B,KAAK,SAAS,IAAI;wBAChE,8BAA8B,EAC5B,IAAI,CAAC,OAAO,EAAE,8BAA8B;qBAC/C,CAAC;iBACH;aACF,CAAC;SACH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,aAA4B;QAC/B,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,0BAAW,CAAC,CAAC;QAEvD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,OAAO;QACL,kDAAkD;QAClD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,OAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,WAAW;QACT,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,6CAAoB,EAAE,CAAC;IACpC,CAAC;IAED,oBAAoB;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AA1ED,wCA0EC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsdk/kafka.transport",
3
- "version": "2.4.3",
3
+ "version": "2.5.0",
4
4
  "description": "Transport that consumes messages from kafka",
5
5
  "license": "Apache License 2.0",
6
6
  "publishConfig": {
@@ -13,8 +13,8 @@
13
13
  "peerDependencies": {
14
14
  "@nestjs/common": "^9.0.0",
15
15
  "@nestjs/microservices": "^9.0.0",
16
- "@rsdk/core": "^2.4.3",
17
- "@rsdk/kafka.common": "^2.4.3",
16
+ "@rsdk/core": "^2.5.0",
17
+ "@rsdk/kafka.common": "^2.5.0",
18
18
  "@rsdk/logging": "^2.4.2",
19
19
  "@rsdk/metadata": "^2.4.2",
20
20
  "kafkajs": "^2.2.4",
@@ -23,5 +23,5 @@
23
23
  "dependencies": {
24
24
  "lodash": "^4.17.21"
25
25
  },
26
- "gitHead": "404d6d9fdca7ac053ff9f8adff0cf43c90624ed6"
26
+ "gitHead": "da4287a3aff2940920e85074296908adf291d96f"
27
27
  }
@@ -19,6 +19,31 @@ import { KafkaErrorsFormatter } from './kafka-errors.formatter';
19
19
  export interface KafkaTransportOptions {
20
20
  // TODO JsDoc
21
21
  autoCommit?: boolean;
22
+
23
+ /**
24
+ * По умолчанию все обработчики работают синхронно, то есть в случае
25
+ * @example
26
+ * class Controller {
27
+ * // @Consume(ActionOneEvent)
28
+ * actionOne() {}
29
+ *
30
+ * // @Consume(ActionTwoEvent)
31
+ * actionTwo() {}}
32
+ * }
33
+ *
34
+ * // Обработчик `actionTwo` не будет запущен до тех пор, пока не завершен обработчик `actionOne` и наоборот
35
+ * // Более того пока не завершена обработка одного из событий, не будет начата обработка следующего
36
+ * // Как пример это происходит вот так
37
+ *
38
+ * for await (const event of events) {
39
+ * await handle(event)
40
+ * }
41
+ *
42
+ * // Изменение этого параметра как бы добавит rate limit одновременно запущенных обработчиков пример https://github.com/nats-io/nats.deno/blob/main/jetstream.md#:~:text=Here%27s%20a%20solution%20that%20introduces%20a%20rate%20limiter%3A
43
+ * // Важно понимать что на всё приложение consumer ровно один, соответственно изменение этого параметра влияет на вообще все обработчики событий
44
+ * // https://kafka.js.org/docs/1.12.0/consuming#a-name-concurrent-processing-a-partition-aware-concurrency
45
+ */
46
+ partitionsConsumedConcurrently?: number;
22
47
  }
23
48
 
24
49
  // TODO: JsDoc
@@ -65,6 +90,10 @@ export class KafkaTransport implements IMicroserviceTransport {
65
90
  },
66
91
  run: {
67
92
  autoCommit: this.options?.autoCommit ?? true,
93
+ ...(this.options?.partitionsConsumedConcurrently !== undefined && {
94
+ partitionsConsumedConcurrently:
95
+ this.options?.partitionsConsumedConcurrently,
96
+ }),
68
97
  },
69
98
  }),
70
99
  };