@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.
- package/README.md +14 -14
- package/content/best-practices/api-usage-examples.md +39 -19
- package/content/best-practices/architectural-patterns.md +22 -11
- package/content/best-practices/architecture-decisions.md +29 -16
- package/content/best-practices/code-style-standards/advanced-patterns.md +43 -31
- package/content/best-practices/code-style-standards/constants-configuration.md +19 -4
- package/content/best-practices/code-style-standards/control-flow.md +33 -1
- package/content/best-practices/code-style-standards/documentation.md +28 -8
- package/content/best-practices/code-style-standards/function-patterns.md +15 -4
- package/content/best-practices/code-style-standards/index.md +7 -2
- package/content/best-practices/code-style-standards/naming-conventions.md +26 -2
- package/content/best-practices/code-style-standards/route-definitions.md +9 -5
- package/content/best-practices/code-style-standards/tooling.md +14 -1
- package/content/best-practices/code-style-standards/type-safety.md +39 -6
- package/content/best-practices/common-pitfalls.md +59 -35
- package/content/best-practices/contribution-workflow.md +6 -2
- package/content/best-practices/data-modeling.md +83 -67
- package/content/best-practices/deployment-strategies.md +56 -19
- package/content/best-practices/error-handling.md +182 -93
- package/content/best-practices/index.md +6 -0
- package/content/best-practices/performance-optimization.md +31 -17
- package/content/best-practices/security-guidelines.md +35 -9
- package/content/best-practices/testing-strategies.md +7 -2
- package/content/best-practices/troubleshooting-tips.md +27 -17
- package/content/extensions/components/api-reference.md +107 -322
- package/content/extensions/components/authentication/api.md +454 -603
- package/content/extensions/components/authentication/errors.md +121 -498
- package/content/extensions/components/authentication/index.md +88 -801
- package/content/extensions/components/authentication/usage.md +207 -956
- package/content/extensions/components/authorization/api.md +736 -656
- package/content/extensions/components/authorization/errors.md +168 -206
- package/content/extensions/components/authorization/index.md +82 -797
- package/content/extensions/components/authorization/usage.md +194 -527
- package/content/extensions/components/health-check.md +71 -243
- package/content/extensions/components/mail/api.md +504 -287
- package/content/extensions/components/mail/errors.md +73 -61
- package/content/extensions/components/mail/index.md +96 -467
- package/content/extensions/components/mail/usage.md +130 -172
- package/content/extensions/components/request-tracker.md +66 -173
- package/content/extensions/components/socket-io/api.md +195 -13
- package/content/extensions/components/socket-io/errors.md +3 -3
- package/content/extensions/components/socket-io/index.md +50 -337
- package/content/extensions/components/socket-io/usage.md +143 -26
- package/content/extensions/components/static-asset/api.md +410 -142
- package/content/extensions/components/static-asset/errors.md +110 -53
- package/content/extensions/components/static-asset/index.md +79 -608
- package/content/extensions/components/static-asset/usage.md +180 -300
- package/content/extensions/components/websocket/api.md +275 -399
- package/content/extensions/components/websocket/errors.md +47 -56
- package/content/extensions/components/websocket/index.md +74 -407
- package/content/extensions/components/websocket/usage.md +110 -341
- package/content/extensions/helpers/cron/index.md +51 -160
- package/content/extensions/helpers/crypto/index.md +62 -483
- package/content/extensions/helpers/crypto/reference.md +456 -0
- package/content/extensions/helpers/env/index.md +60 -178
- package/content/extensions/helpers/error/index.md +221 -207
- package/content/extensions/helpers/inversion/index.md +65 -556
- package/content/extensions/helpers/inversion/reference.md +522 -0
- package/content/extensions/helpers/kafka/admin.md +20 -1
- package/content/extensions/helpers/kafka/compile-binary.md +98 -0
- package/content/extensions/helpers/kafka/consumer.md +54 -20
- package/content/extensions/helpers/kafka/examples.md +21 -16
- package/content/extensions/helpers/kafka/index.md +80 -607
- package/content/extensions/helpers/kafka/producer.md +134 -5
- package/content/extensions/helpers/kafka/schema-registry.md +45 -70
- package/content/extensions/helpers/logger/hf-logger.md +193 -0
- package/content/extensions/helpers/logger/index.md +64 -563
- package/content/extensions/helpers/logger/pino.md +85 -0
- package/content/extensions/helpers/logger/reference.md +746 -0
- package/content/extensions/helpers/network/api.md +241 -195
- package/content/extensions/helpers/network/index.md +72 -530
- package/content/extensions/helpers/queue/index.md +72 -900
- package/content/extensions/helpers/queue/reference.md +467 -0
- package/content/extensions/helpers/redis/index.md +73 -645
- package/content/extensions/helpers/redis/reference.md +727 -0
- package/content/extensions/helpers/secrets/index.md +66 -0
- package/content/extensions/helpers/socket-io/api.md +305 -203
- package/content/extensions/helpers/socket-io/index.md +66 -432
- package/content/extensions/helpers/storage/api.md +564 -462
- package/content/extensions/helpers/storage/index.md +77 -573
- package/content/extensions/helpers/types/index.md +66 -499
- package/content/extensions/helpers/types/reference.md +650 -0
- package/content/extensions/helpers/uid/index.md +58 -227
- package/content/extensions/helpers/websocket/api.md +329 -216
- package/content/extensions/helpers/websocket/index.md +65 -503
- package/content/extensions/helpers/worker-thread/index.md +58 -396
- package/content/extensions/helpers/worker-thread/reference.md +428 -0
- package/content/guides/core-concepts/persistent/datasources.md +13 -20
- package/content/guides/core-concepts/persistent/index.md +2 -4
- package/content/guides/core-concepts/persistent/models.md +1 -1
- package/content/guides/core-concepts/persistent/postgres-drivers.md +59 -25
- package/content/guides/core-concepts/persistent/search-meilisearch.md +3 -1
- package/content/guides/core-concepts/persistent/search-typesense.md +7 -5
- package/content/guides/core-concepts/persistent/transactions.md +1 -1
- package/content/guides/core-concepts/secrets-vault.md +177 -0
- package/content/guides/core-concepts/services.md +1 -1
- package/content/guides/migrations/redis-helpers-migration.md +1 -1
- package/content/guides/migrations/unified-connectors-migration.md +2 -2
- package/content/guides/tutorials/building-a-crud-api.md +9 -13
- package/content/guides/tutorials/ecommerce-api.md +10 -15
- package/content/guides/tutorials/realtime-chat.md +7 -7
- package/content/references/base/application.md +1 -1
- package/content/references/base/connectors.md +79 -136
- package/content/references/base/datasources-reference.md +599 -0
- package/content/references/base/datasources.md +85 -447
- package/content/references/base/dependency-injection.md +17 -39
- package/content/references/base/filter-system/application-usage.md +69 -121
- package/content/references/base/filter-system/array-operators.md +12 -0
- package/content/references/base/filter-system/comparison-operators.md +12 -0
- package/content/references/base/filter-system/default-filter.md +136 -348
- package/content/references/base/filter-system/fields-order-pagination.md +38 -16
- package/content/references/base/filter-system/index.md +106 -257
- package/content/references/base/filter-system/json-filtering.md +12 -2
- package/content/references/base/filter-system/list-operators.md +16 -2
- package/content/references/base/filter-system/logical-operators.md +13 -0
- package/content/references/base/filter-system/null-operators.md +13 -0
- package/content/references/base/filter-system/pattern-matching.md +12 -0
- package/content/references/base/filter-system/quick-reference.md +11 -2
- package/content/references/base/filter-system/range-operators.md +12 -0
- package/content/references/base/filter-system/tips.md +70 -133
- package/content/references/base/filter-system/use-cases.md +156 -233
- package/content/references/base/middlewares.md +35 -21
- package/content/references/base/models-reference.md +886 -0
- package/content/references/base/models.md +80 -1452
- package/content/references/base/repositories/advanced.md +156 -192
- package/content/references/base/repositories/index.md +77 -650
- package/content/references/base/repositories/mixins.md +22 -18
- package/content/references/base/repositories/relations.md +123 -171
- package/content/references/base/repositories/soft-deletable.md +58 -56
- package/content/references/base/secrets.md +263 -0
- package/content/references/base/services.md +2 -2
- package/content/references/configuration/environment-variables.md +51 -5
- package/content/references/configuration/index.md +49 -31
- package/content/references/quick-reference.md +3 -16
- package/content/references/utilities/crypto.md +35 -76
- package/content/references/utilities/date.md +33 -73
- package/content/references/utilities/index.md +1 -1
- package/content/references/utilities/jsx-reference.md +298 -0
- package/content/references/utilities/jsx.md +82 -525
- package/content/references/utilities/module.md +29 -62
- package/content/references/utilities/parse.md +34 -64
- package/content/references/utilities/performance.md +33 -58
- package/content/references/utilities/promise.md +28 -62
- package/content/references/utilities/request.md +57 -218
- package/content/references/utilities/schema.md +43 -137
- package/content/references/utilities/statuses-reference.md +361 -0
- package/content/references/utilities/statuses.md +63 -667
- 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` |
|
|
51
|
-
| `maxWaitTime` | `number` |
|
|
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
|
-
-
|
|
167
|
-
-
|
|
168
|
-
-
|
|
169
|
-
- The stream `'error'`
|
|
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;
|
|
179
|
-
fallbackMode?: MessagesStreamFallbackModeValue;
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
350
|
+
## See also
|
|
346
351
|
|
|
347
|
-
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
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
|
-
|
|
355
|
-
- [Queue Helper](../queue/) -- BullMQ, MQTT, and in-memory queues
|
|
356
|
-
- [Redis Helper](../redis/) -- Redis connection management
|
|
361
|
+
**Files:**
|
|
357
362
|
|
|
358
|
-
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
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
|