@venizia/ignis-docs 0.1.0 → 0.2.1-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.
Files changed (148) hide show
  1. package/README.md +14 -14
  2. package/content/best-practices/api-usage-examples.md +39 -19
  3. package/content/best-practices/architectural-patterns.md +22 -11
  4. package/content/best-practices/architecture-decisions.md +29 -16
  5. package/content/best-practices/code-style-standards/advanced-patterns.md +43 -31
  6. package/content/best-practices/code-style-standards/constants-configuration.md +19 -4
  7. package/content/best-practices/code-style-standards/control-flow.md +33 -1
  8. package/content/best-practices/code-style-standards/documentation.md +28 -8
  9. package/content/best-practices/code-style-standards/function-patterns.md +15 -4
  10. package/content/best-practices/code-style-standards/index.md +7 -2
  11. package/content/best-practices/code-style-standards/naming-conventions.md +26 -2
  12. package/content/best-practices/code-style-standards/route-definitions.md +9 -5
  13. package/content/best-practices/code-style-standards/tooling.md +14 -1
  14. package/content/best-practices/code-style-standards/type-safety.md +39 -6
  15. package/content/best-practices/common-pitfalls.md +59 -35
  16. package/content/best-practices/contribution-workflow.md +6 -2
  17. package/content/best-practices/data-modeling.md +83 -67
  18. package/content/best-practices/deployment-strategies.md +56 -19
  19. package/content/best-practices/error-handling.md +182 -93
  20. package/content/best-practices/index.md +6 -0
  21. package/content/best-practices/performance-optimization.md +31 -17
  22. package/content/best-practices/security-guidelines.md +35 -9
  23. package/content/best-practices/testing-strategies.md +7 -2
  24. package/content/best-practices/troubleshooting-tips.md +27 -17
  25. package/content/extensions/components/api-reference.md +107 -322
  26. package/content/extensions/components/authentication/api.md +454 -603
  27. package/content/extensions/components/authentication/errors.md +121 -498
  28. package/content/extensions/components/authentication/index.md +88 -801
  29. package/content/extensions/components/authentication/usage.md +207 -956
  30. package/content/extensions/components/authorization/api.md +736 -656
  31. package/content/extensions/components/authorization/errors.md +168 -206
  32. package/content/extensions/components/authorization/index.md +82 -797
  33. package/content/extensions/components/authorization/usage.md +194 -527
  34. package/content/extensions/components/health-check.md +71 -243
  35. package/content/extensions/components/mail/api.md +504 -287
  36. package/content/extensions/components/mail/errors.md +73 -61
  37. package/content/extensions/components/mail/index.md +96 -467
  38. package/content/extensions/components/mail/usage.md +130 -172
  39. package/content/extensions/components/request-tracker.md +66 -173
  40. package/content/extensions/components/socket-io/api.md +195 -13
  41. package/content/extensions/components/socket-io/errors.md +3 -3
  42. package/content/extensions/components/socket-io/index.md +50 -337
  43. package/content/extensions/components/socket-io/usage.md +143 -26
  44. package/content/extensions/components/static-asset/api.md +410 -142
  45. package/content/extensions/components/static-asset/errors.md +110 -53
  46. package/content/extensions/components/static-asset/index.md +79 -608
  47. package/content/extensions/components/static-asset/usage.md +180 -300
  48. package/content/extensions/components/websocket/api.md +275 -399
  49. package/content/extensions/components/websocket/errors.md +47 -56
  50. package/content/extensions/components/websocket/index.md +74 -407
  51. package/content/extensions/components/websocket/usage.md +110 -341
  52. package/content/extensions/helpers/cron/index.md +51 -160
  53. package/content/extensions/helpers/crypto/index.md +62 -483
  54. package/content/extensions/helpers/crypto/reference.md +456 -0
  55. package/content/extensions/helpers/env/index.md +60 -178
  56. package/content/extensions/helpers/error/index.md +221 -207
  57. package/content/extensions/helpers/inversion/index.md +65 -556
  58. package/content/extensions/helpers/inversion/reference.md +522 -0
  59. package/content/extensions/helpers/kafka/admin.md +20 -1
  60. package/content/extensions/helpers/kafka/compile-binary.md +98 -0
  61. package/content/extensions/helpers/kafka/consumer.md +54 -20
  62. package/content/extensions/helpers/kafka/examples.md +21 -16
  63. package/content/extensions/helpers/kafka/index.md +80 -607
  64. package/content/extensions/helpers/kafka/producer.md +134 -5
  65. package/content/extensions/helpers/kafka/schema-registry.md +45 -70
  66. package/content/extensions/helpers/logger/hf-logger.md +193 -0
  67. package/content/extensions/helpers/logger/index.md +64 -563
  68. package/content/extensions/helpers/logger/pino.md +85 -0
  69. package/content/extensions/helpers/logger/reference.md +746 -0
  70. package/content/extensions/helpers/network/api.md +241 -195
  71. package/content/extensions/helpers/network/index.md +72 -530
  72. package/content/extensions/helpers/queue/index.md +72 -900
  73. package/content/extensions/helpers/queue/reference.md +467 -0
  74. package/content/extensions/helpers/redis/index.md +73 -645
  75. package/content/extensions/helpers/redis/reference.md +727 -0
  76. package/content/extensions/helpers/secrets/index.md +66 -0
  77. package/content/extensions/helpers/socket-io/api.md +305 -203
  78. package/content/extensions/helpers/socket-io/index.md +66 -432
  79. package/content/extensions/helpers/storage/api.md +564 -462
  80. package/content/extensions/helpers/storage/index.md +77 -573
  81. package/content/extensions/helpers/types/index.md +66 -499
  82. package/content/extensions/helpers/types/reference.md +650 -0
  83. package/content/extensions/helpers/uid/index.md +58 -227
  84. package/content/extensions/helpers/websocket/api.md +329 -216
  85. package/content/extensions/helpers/websocket/index.md +65 -503
  86. package/content/extensions/helpers/worker-thread/index.md +58 -396
  87. package/content/extensions/helpers/worker-thread/reference.md +428 -0
  88. package/content/guides/core-concepts/persistent/datasources.md +13 -20
  89. package/content/guides/core-concepts/persistent/index.md +2 -4
  90. package/content/guides/core-concepts/persistent/models.md +1 -1
  91. package/content/guides/core-concepts/persistent/postgres-drivers.md +59 -25
  92. package/content/guides/core-concepts/persistent/search-meilisearch.md +3 -1
  93. package/content/guides/core-concepts/persistent/search-typesense.md +7 -5
  94. package/content/guides/core-concepts/persistent/transactions.md +1 -1
  95. package/content/guides/core-concepts/secrets-vault.md +177 -0
  96. package/content/guides/core-concepts/services.md +1 -1
  97. package/content/guides/migrations/redis-helpers-migration.md +1 -1
  98. package/content/guides/migrations/unified-connectors-migration.md +2 -2
  99. package/content/guides/tutorials/building-a-crud-api.md +9 -13
  100. package/content/guides/tutorials/ecommerce-api.md +10 -15
  101. package/content/guides/tutorials/realtime-chat.md +7 -7
  102. package/content/references/base/application.md +1 -1
  103. package/content/references/base/connectors.md +79 -136
  104. package/content/references/base/datasources-reference.md +599 -0
  105. package/content/references/base/datasources.md +85 -447
  106. package/content/references/base/dependency-injection.md +17 -39
  107. package/content/references/base/filter-system/application-usage.md +69 -121
  108. package/content/references/base/filter-system/array-operators.md +12 -0
  109. package/content/references/base/filter-system/comparison-operators.md +12 -0
  110. package/content/references/base/filter-system/default-filter.md +136 -348
  111. package/content/references/base/filter-system/fields-order-pagination.md +38 -16
  112. package/content/references/base/filter-system/index.md +106 -257
  113. package/content/references/base/filter-system/json-filtering.md +12 -2
  114. package/content/references/base/filter-system/list-operators.md +16 -2
  115. package/content/references/base/filter-system/logical-operators.md +13 -0
  116. package/content/references/base/filter-system/null-operators.md +13 -0
  117. package/content/references/base/filter-system/pattern-matching.md +12 -0
  118. package/content/references/base/filter-system/quick-reference.md +11 -2
  119. package/content/references/base/filter-system/range-operators.md +12 -0
  120. package/content/references/base/filter-system/tips.md +70 -133
  121. package/content/references/base/filter-system/use-cases.md +156 -233
  122. package/content/references/base/middlewares.md +35 -21
  123. package/content/references/base/models-reference.md +886 -0
  124. package/content/references/base/models.md +80 -1452
  125. package/content/references/base/repositories/advanced.md +156 -192
  126. package/content/references/base/repositories/index.md +77 -650
  127. package/content/references/base/repositories/mixins.md +22 -18
  128. package/content/references/base/repositories/relations.md +123 -171
  129. package/content/references/base/repositories/soft-deletable.md +58 -56
  130. package/content/references/base/secrets.md +263 -0
  131. package/content/references/base/services.md +2 -2
  132. package/content/references/configuration/environment-variables.md +51 -5
  133. package/content/references/configuration/index.md +49 -31
  134. package/content/references/quick-reference.md +3 -16
  135. package/content/references/utilities/crypto.md +35 -76
  136. package/content/references/utilities/date.md +33 -73
  137. package/content/references/utilities/index.md +1 -1
  138. package/content/references/utilities/jsx-reference.md +298 -0
  139. package/content/references/utilities/jsx.md +82 -525
  140. package/content/references/utilities/module.md +29 -62
  141. package/content/references/utilities/parse.md +34 -64
  142. package/content/references/utilities/performance.md +33 -58
  143. package/content/references/utilities/promise.md +28 -62
  144. package/content/references/utilities/request.md +57 -218
  145. package/content/references/utilities/schema.md +43 -137
  146. package/content/references/utilities/statuses-reference.md +361 -0
  147. package/content/references/utilities/statuses.md +63 -667
  148. package/package.json +8 -8
@@ -1,6 +1,12 @@
1
+ ---
2
+ title: Kafka Consumer
3
+ description: KafkaConsumerHelper - message callbacks, automatic reconnect, and lag monitoring
4
+ difficulty: intermediate
5
+ ---
6
+
1
7
  # Consumer
2
8
 
3
- The `KafkaConsumerHelper` wraps `@platformatic/kafka`'s `Consumer` with health tracking, graceful shutdown, message callbacks, consumer group event callbacks, and lag monitoring.
9
+ The `KafkaConsumerHelper` wraps `@platformatic/kafka`'s `Consumer` with health tracking, graceful shutdown, message callbacks, consumer group event callbacks, automatic reconnect, and lag monitoring.
4
10
 
5
11
  ```typescript
6
12
  class KafkaConsumerHelper<
@@ -18,7 +24,7 @@ class KafkaConsumerHelper<
18
24
  | `newInstance(opts)` | `static newInstance<K,V,HK,HV>(opts): KafkaConsumerHelper<K,V,HK,HV>` | Factory method |
19
25
  | `getConsumer()` | `(): Consumer<K,V,HK,HV>` | Access the underlying `Consumer` |
20
26
  | `getStream()` | `(): MessagesStream \| null` | Get the active stream (after `start()`) |
21
- | `start(opts)` | `(opts: IKafkaConsumeStartOptions): Promise<void>` | Start consuming (creates stream, wires callbacks) |
27
+ | `start(opts)` | `(opts: IKafkaConsumeStartOptions): Promise<void>` | Start consuming (creates stream, wires callbacks, drives automatic reconnect) |
22
28
  | `startLagMonitoring(opts)` | `(opts: { topics: string[]; interval?: number }): void` | Start periodic lag monitoring |
23
29
  | `stopLagMonitoring()` | `(): void` | Stop lag monitoring |
24
30
  | `isHealthy()` | `(): boolean` | `true` when at least one broker connected |
@@ -34,6 +40,8 @@ interface IKafkaConsumerOptions<KeyType, ValueType, HeaderKeyType, HeaderValueTy
34
40
  extends IKafkaConnectionOptions
35
41
  ```
36
42
 
43
+ Plus the shared [Connection & Authentication](./producer#connection--authentication) options (`bootstrapBrokers`, `clientId`, `retries`, `sasl`, `tls`, ...), documented once on the Producer page.
44
+
37
45
  ### Consumer Configuration
38
46
 
39
47
  | Option | Type | Default | Description |
@@ -47,8 +55,8 @@ interface IKafkaConsumerOptions<KeyType, ValueType, HeaderKeyType, HeaderValueTy
47
55
  | `rebalanceTimeout` | `number` | `sessionTimeout` | Max time for rebalance. Defaults to the value of `sessionTimeout` |
48
56
  | `highWaterMark` | `number` | `1024` | Stream buffer size (messages) |
49
57
  | `minBytes` | `number` | `1` | Min bytes per fetch response |
50
- | `maxBytes` | `number` | -- | Max bytes per fetch response per partition |
51
- | `maxWaitTime` | `number` | -- | Max time (ms) broker waits for `minBytes` |
58
+ | `maxBytes` | `number` | `10485760` (10 MB) | Max bytes per fetch response per partition |
59
+ | `maxWaitTime` | `number` | `5000` | Max time (ms) broker waits for `minBytes` |
52
60
  | `metadataMaxAge` | `number` | `300000` | Metadata cache TTL (ms) |
53
61
  | `groupProtocol` | `'classic' \| 'consumer'` | `'classic'` | Consumer group protocol. `'consumer'` = KIP-848 (Kafka 3.7+) |
54
62
  | `groupInstanceId` | `string` | -- | Static group membership ID -- prevents rebalance on restart |
@@ -86,8 +94,6 @@ interface IKafkaConsumerOptions<KeyType, ValueType, HeaderKeyType, HeaderValueTy
86
94
  | `onLag` | `TKafkaLagCallback` | Receives `{ lag }` (Offsets map) |
87
95
  | `onLagError` | `TKafkaLagErrorCallback` | Receives `{ error }` |
88
96
 
89
- Plus all [Connection Options](./#connection-options).
90
-
91
97
  ## Basic Example
92
98
 
93
99
  ```typescript
@@ -163,36 +169,43 @@ Stream 'error' event
163
169
  -> onMessageError({ error }) (no message available)
164
170
  ```
165
171
 
166
- - `onMessage` is the main processing callback -- do your business logic here
167
- - `onMessageDone` fires only after `onMessage` resolves successfully -- use for logging, metrics, etc.
168
- - `onMessageError` fires if `onMessage` throws -- use for error tracking. Note that errors from `onMessageDone` also trigger `onMessageError`
169
- - The stream `'error'` event also calls `onMessageError` (without `message` since it's a stream-level error), but only if `onMessageError` was provided
172
+ - **`onMessage` is the main processing callback** -- do your business logic here.
173
+ - **`onMessageDone` fires only after `onMessage` resolves successfully** -- use it for logging, metrics, and similar side effects. Note that errors thrown from `onMessageDone` also trigger `onMessageError`.
174
+ - **`onMessageError` fires if `onMessage` throws**, and also for the stream's own `'error'` event (without a `message`, since it's a stream-level error).
175
+ - **The stream `'error'` listener is always attached**, whether or not you pass `onMessageError`. An `EventEmitter` `'error'` event with zero listeners is rethrown as an uncaught exception -- without this listener, a pull-style consumer (`start()` + `getStream()`, no `onMessage`) would take the whole process down on the first broker drop.
170
176
 
171
177
  ## start()
172
178
 
173
- `start()` creates the consume stream and wires all message callbacks. It must be called explicitly after construction.
179
+ `start()` creates the consume stream and wires all message callbacks. It must be called explicitly after construction, and it guards against duplicate starts -- calling it twice logs a warning and returns immediately.
174
180
 
175
181
  ```typescript
176
182
  interface IKafkaConsumeStartOptions {
177
183
  topics: string[];
178
- mode?: MessagesStreamModeValue; // Default: 'committed'
179
- fallbackMode?: MessagesStreamFallbackModeValue; // Default: 'latest'
184
+ mode?: MessagesStreamModeValue;
185
+ fallbackMode?: MessagesStreamFallbackModeValue;
186
+ reconnectDelayMs?: number;
187
+ maxReconnectAttempts?: number;
180
188
  }
181
189
  ```
182
190
 
183
191
  | Mode | Description |
184
192
  |------|-------------|
185
- | `'committed'` | Resume from last committed offset. **Recommended for production** |
193
+ | `'committed'` (default) | Resume from last committed offset. **Recommended for production** |
186
194
  | `'latest'` | Start from the latest offset (skip existing messages) |
187
195
  | `'earliest'` | Start from the beginning of the topic |
188
196
  | `'manual'` | Start from explicitly provided offsets |
189
197
 
190
198
  | Fallback | Description |
191
199
  |----------|-------------|
192
- | `'latest'` | Start from latest (default) -- ignore historical messages |
200
+ | `'latest'` (default) | Start from latest -- ignore historical messages |
193
201
  | `'earliest'` | Start from beginning -- process all historical messages |
194
202
  | `'fail'` | Throw an error |
195
203
 
204
+ | Reconnect option | Default | Description |
205
+ |-------------------|---------|-------------|
206
+ | `reconnectDelayMs` | `2000` | Delay before each automatic reconnect attempt |
207
+ | `maxReconnectAttempts` | `5` | Consecutive reconnect attempts before the consume loop gives up |
208
+
196
209
  ```typescript
197
210
  // Production pattern
198
211
  await helper.start({ topics: ['orders'] });
@@ -200,15 +213,25 @@ await helper.start({ topics: ['orders'] });
200
213
  // Replay all historical messages
201
214
  await helper.start({ topics: ['orders'], mode: 'earliest' });
202
215
 
203
- // Custom mode
216
+ // Custom mode and reconnect budget
204
217
  await helper.start({
205
218
  topics: ['orders'],
206
219
  mode: 'committed',
207
220
  fallbackMode: 'earliest',
221
+ reconnectDelayMs: 5_000,
222
+ maxReconnectAttempts: 10,
208
223
  });
209
224
  ```
210
225
 
211
- Guards against duplicate starts -- calling `start()` twice logs a warning and returns immediately.
226
+ ## Automatic reconnect
227
+
228
+ When `onMessage` is provided, `start()` drives a background consume loop on top of the stream. That loop reconnects on its own:
229
+
230
+ - **Only the callback-driven loop reconnects.** A pull-style consumer using `getStream()` or `consumer.consume()` directly owns its own retry logic -- the helper's automatic reconnect only runs inside `startConsumeLoop`, which is wired exclusively when `onMessage` is set.
231
+ - **A full broker outage marks the session stale.** When every broker disconnects (`getConnectedBrokerCount()` drops to `0`, via `client:broker:disconnect` or `client:broker:failed`), the helper destroys the current stream immediately instead of waiting for it to error out on its own.
232
+ - **Reconnect rebuilds the client after a stale session.** The next attempt, after `reconnectDelayMs`, constructs a brand-new `@platformatic/kafka` `Consumer` with the original constructor options and swaps it in -- a fresh client forces a clean group rejoin rather than reusing session state Kafka has likely already expired. Active lag monitoring is re-armed on the new client automatically.
233
+ - **Attempts are capped.** After `maxReconnectAttempts` consecutive failures, the consume loop exits and logs an error. Message processing stops until you call `start()` again with a new set of options.
234
+ - **Every retry is logged**, including the attempt number, delay, and current connected-broker count, so a stuck reconnect loop is visible in application logs without extra instrumentation.
212
235
 
213
236
  ## Lag Monitoring
214
237
 
@@ -220,9 +243,7 @@ helper.startLagMonitoring({ topics: ['orders'], interval: 10_000 });
220
243
  helper.stopLagMonitoring();
221
244
  ```
222
245
 
223
- Lag data is delivered via the `onLag` callback. Errors via `onLagError`.
224
-
225
- Guards against duplicate starts -- calling `startLagMonitoring()` twice logs a warning.
246
+ Lag data is delivered via the `onLag` callback. Errors via `onLagError`. `interval` defaults to `30000` ms. Guards against duplicate starts -- calling `startLagMonitoring()` twice logs a warning.
226
247
 
227
248
  For one-time lag checks, use the underlying consumer directly:
228
249
 
@@ -383,3 +404,16 @@ Topic "orders" (3 partitions)
383
404
 
384
405
  > [!TIP]
385
406
  > Create topics with enough partitions for your expected parallelism. You can increase partitions later with `admin.createPartitions()`, but you cannot decrease them.
407
+
408
+ ## See also
409
+
410
+ - [Kafka Overview](./) - the four helpers, shared health/close API, and the compile-binary caveat
411
+ - [Producer](./producer) - the sending side, plus the shared Connection & Authentication options
412
+ - [Admin](./admin) - create topics and inspect consumer groups from outside the running consumer
413
+ - [Examples & Troubleshooting](./examples) - lag monitoring, exactly-once, and common connection errors
414
+
415
+ **Files:**
416
+
417
+ - [`packages/helpers/src/modules/queue/kafka/consumer.ts`](https://github.com/VENIZIA-AI/ignis/blob/main/packages/helpers/src/modules/queue/kafka/consumer.ts) - `KafkaConsumerHelper`, consume loop, automatic reconnect
418
+ - [`packages/helpers/src/modules/queue/kafka/base.ts`](https://github.com/VENIZIA-AI/ignis/blob/main/packages/helpers/src/modules/queue/kafka/base.ts) - `BaseKafkaHelper`, shared health tracking and shutdown
419
+ - [`packages/helpers/src/modules/queue/kafka/common/types.ts`](https://github.com/VENIZIA-AI/ignis/blob/main/packages/helpers/src/modules/queue/kafka/common/types.ts) - `IKafkaConsumerOptions`, `IKafkaConsumeStartOptions`
@@ -1,3 +1,9 @@
1
+ ---
2
+ title: Kafka Examples & Troubleshooting
3
+ description: End-to-end producer, consumer, admin, and IoC examples, plus a common-error lookup table
4
+ difficulty: intermediate
5
+ ---
6
+
1
7
  # Examples & Troubleshooting
2
8
 
3
9
  Complete examples and common issue resolution for the Kafka helpers.
@@ -260,7 +266,7 @@ import {
260
266
  KafkaAdminHelper,
261
267
  } from '@venizia/ignis-helpers/kafka';
262
268
  import { stringSerializers, stringDeserializers } from '@platformatic/kafka';
263
- import { inject, injectable } from '@venizia/ignis-inversion';
269
+ import { inject } from '@venizia/ignis-inversion';
264
270
 
265
271
  // Register helpers in the IoC container
266
272
  app.bind('kafka.producer').to(
@@ -286,7 +292,6 @@ app.bind('kafka.consumer').to(
286
292
  );
287
293
 
288
294
  // Inject into services
289
- @injectable()
290
295
  export class OrderEventService {
291
296
  constructor(
292
297
  @inject({ key: 'kafka.producer' }) private producer: KafkaProducerHelper,
@@ -342,20 +347,20 @@ environment:
342
347
  - `EXTERNAL` -- used for client connections from outside Docker
343
348
  - `CONTROLLER` -- used for KRaft controller communication
344
349
 
345
- ## See Also
350
+ ## See also
346
351
 
347
- - **Kafka Pages:**
348
- - [Overview & Fundamentals](./) -- Connection, serialization, constants, compression
349
- - [Producer](./producer) -- Producer helper, transactions, API reference
350
- - [Consumer](./consumer) -- Consumer helper, callbacks, lag monitoring, API reference
351
- - [Admin](./admin) -- Admin helper & API reference
352
- - [Schema Registry](./schema-registry) -- Schema registry helper
352
+ - [Kafka Overview](./) - the four helpers, shared health/close API, and the compile-binary caveat
353
+ - [Producer](./producer) - connection & SASL setup, serialization, compression, transactions
354
+ - [Consumer](./consumer) - message callbacks, automatic reconnect, lag monitoring
355
+ - [Admin](./admin) - topic, group, offset, ACL, and quota management
356
+ - [Schema Registry](./schema-registry) - schema-validated serialization
357
+ - [Compiling to a Single Binary](./compile-binary) - required if any example on this page ships inside a `bun build --compile` binary
358
+ - [Queue Helpers](../queue/) - BullMQ, MQTT, and the in-memory queue
359
+ - [Redis Helper](../redis/) - Redis connection management
353
360
 
354
- - **Other Helpers:**
355
- - [Queue Helper](../queue/) -- BullMQ, MQTT, and in-memory queues
356
- - [Redis Helper](../redis/) -- Redis connection management
361
+ **Files:**
357
362
 
358
- - **External Resources:**
359
- - [@platformatic/kafka](https://github.com/platformatic/kafka) -- Underlying Kafka client library
360
- - [Apache Kafka Documentation](https://kafka.apache.org/documentation/) -- Official Kafka docs
361
- - [KIP-848](https://cwiki.apache.org/confluence/display/KAFKA/KIP-848) -- New consumer group protocol
363
+ - [`packages/helpers/src/modules/queue/kafka/producer.ts`](https://github.com/VENIZIA-AI/ignis/blob/main/packages/helpers/src/modules/queue/kafka/producer.ts) - `KafkaProducerHelper`
364
+ - [`packages/helpers/src/modules/queue/kafka/consumer.ts`](https://github.com/VENIZIA-AI/ignis/blob/main/packages/helpers/src/modules/queue/kafka/consumer.ts) - `KafkaConsumerHelper`
365
+ - [`packages/helpers/src/modules/queue/kafka/admin.ts`](https://github.com/VENIZIA-AI/ignis/blob/main/packages/helpers/src/modules/queue/kafka/admin.ts) - `KafkaAdminHelper`
366
+ - [`packages/helpers/src/modules/queue/kafka/index.ts`](https://github.com/VENIZIA-AI/ignis/blob/main/packages/helpers/src/modules/queue/kafka/index.ts) - the `/kafka` sub-path barrel