container-superposition 0.1.1
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 +843 -0
- package/dist/scripts/init.d.ts +3 -0
- package/dist/scripts/init.d.ts.map +1 -0
- package/dist/scripts/init.js +1190 -0
- package/dist/scripts/init.js.map +1 -0
- package/dist/scripts/migrate-to-manifests.d.ts +12 -0
- package/dist/scripts/migrate-to-manifests.d.ts.map +1 -0
- package/dist/scripts/migrate-to-manifests.js +230 -0
- package/dist/scripts/migrate-to-manifests.js.map +1 -0
- package/dist/tool/questionnaire/composer.d.ts +6 -0
- package/dist/tool/questionnaire/composer.d.ts.map +1 -0
- package/dist/tool/questionnaire/composer.js +1232 -0
- package/dist/tool/questionnaire/composer.js.map +1 -0
- package/dist/tool/readme/markdown-parser.d.ts +30 -0
- package/dist/tool/readme/markdown-parser.d.ts.map +1 -0
- package/dist/tool/readme/markdown-parser.js +139 -0
- package/dist/tool/readme/markdown-parser.js.map +1 -0
- package/dist/tool/readme/readme-generator.d.ts +9 -0
- package/dist/tool/readme/readme-generator.d.ts.map +1 -0
- package/dist/tool/readme/readme-generator.js +422 -0
- package/dist/tool/readme/readme-generator.js.map +1 -0
- package/dist/tool/schema/custom-loader.d.ts +17 -0
- package/dist/tool/schema/custom-loader.d.ts.map +1 -0
- package/dist/tool/schema/custom-loader.js +149 -0
- package/dist/tool/schema/custom-loader.js.map +1 -0
- package/dist/tool/schema/overlay-loader.d.ts +47 -0
- package/dist/tool/schema/overlay-loader.d.ts.map +1 -0
- package/dist/tool/schema/overlay-loader.js +252 -0
- package/dist/tool/schema/overlay-loader.js.map +1 -0
- package/dist/tool/schema/types.d.ts +212 -0
- package/dist/tool/schema/types.d.ts.map +1 -0
- package/dist/tool/schema/types.js +5 -0
- package/dist/tool/schema/types.js.map +1 -0
- package/docs/README.md +308 -0
- package/docs/architecture.md +233 -0
- package/docs/creating-overlays.md +549 -0
- package/docs/custom-patches.md +540 -0
- package/docs/dependencies.md +279 -0
- package/docs/examples/custom-patches-example.md +85 -0
- package/docs/examples.md +576 -0
- package/docs/messaging-comparison.md +265 -0
- package/docs/messaging-quick-start.md +385 -0
- package/docs/observability-workflow.md +537 -0
- package/docs/overlay-manifest-refactoring.md +214 -0
- package/docs/overlay-metadata-archive.md +54 -0
- package/docs/overlays.md +523 -0
- package/docs/presets-architecture.md +498 -0
- package/docs/presets.md +366 -0
- package/docs/publishing.md +476 -0
- package/docs/quick-reference.md +326 -0
- package/docs/ux.md +170 -0
- package/features/README.md +85 -0
- package/features/cross-distro-packages/README.md +146 -0
- package/features/cross-distro-packages/devcontainer-feature.json +20 -0
- package/features/cross-distro-packages/install.sh +58 -0
- package/features/local-secrets-manager/devcontainer-feature.json +18 -0
- package/features/local-secrets-manager/install.sh +127 -0
- package/features/project-scaffolder/devcontainer-feature.json +24 -0
- package/features/project-scaffolder/install.sh +100 -0
- package/features/team-conventions/devcontainer-feature.json +24 -0
- package/features/team-conventions/install.sh +93 -0
- package/overlays/.registry/README.md +14 -0
- package/overlays/.registry/base-images.yml +26 -0
- package/overlays/.registry/base-templates.yml +7 -0
- package/overlays/README.md +155 -0
- package/overlays/alertmanager/.env.example +5 -0
- package/overlays/alertmanager/README.md +465 -0
- package/overlays/alertmanager/alert-rules.yml +56 -0
- package/overlays/alertmanager/alertmanager.yml +42 -0
- package/overlays/alertmanager/devcontainer.patch.json +12 -0
- package/overlays/alertmanager/docker-compose.yml +20 -0
- package/overlays/alertmanager/overlay.yml +17 -0
- package/overlays/alertmanager/setup.sh +53 -0
- package/overlays/alertmanager/verify.sh +31 -0
- package/overlays/aws-cli/README.md +473 -0
- package/overlays/aws-cli/devcontainer.patch.json +13 -0
- package/overlays/aws-cli/overlay.yml +13 -0
- package/overlays/azure-cli/README.md +551 -0
- package/overlays/azure-cli/devcontainer.patch.json +8 -0
- package/overlays/azure-cli/overlay.yml +13 -0
- package/overlays/bun/README.md +312 -0
- package/overlays/bun/devcontainer.patch.json +41 -0
- package/overlays/bun/overlay.yml +16 -0
- package/overlays/bun/setup.sh +79 -0
- package/overlays/bun/verify.sh +30 -0
- package/overlays/codex/README.md +128 -0
- package/overlays/codex/devcontainer.patch.json +3 -0
- package/overlays/codex/overlay.yml +14 -0
- package/overlays/codex/setup.sh +24 -0
- package/overlays/codex/verify.sh +30 -0
- package/overlays/commitlint/README.md +333 -0
- package/overlays/commitlint/devcontainer.patch.json +8 -0
- package/overlays/commitlint/overlay.yml +16 -0
- package/overlays/commitlint/setup.sh +234 -0
- package/overlays/direnv/README.md +504 -0
- package/overlays/direnv/devcontainer.patch.json +6 -0
- package/overlays/direnv/overlay.yml +13 -0
- package/overlays/direnv/setup.sh +139 -0
- package/overlays/docker-in-docker/README.md +534 -0
- package/overlays/docker-in-docker/devcontainer.patch.json +10 -0
- package/overlays/docker-in-docker/overlay.yml +13 -0
- package/overlays/docker-sock/README.md +256 -0
- package/overlays/docker-sock/devcontainer.patch.json +9 -0
- package/overlays/docker-sock/docker-compose.yml +8 -0
- package/overlays/docker-sock/overlay.yml +13 -0
- package/overlays/dotnet/README.md +147 -0
- package/overlays/dotnet/devcontainer.patch.json +51 -0
- package/overlays/dotnet/global-tools.txt +24 -0
- package/overlays/dotnet/overlay.yml +13 -0
- package/overlays/dotnet/setup.sh +51 -0
- package/overlays/dotnet/verify.sh +26 -0
- package/overlays/gcloud/README.md +269 -0
- package/overlays/gcloud/devcontainer.patch.json +14 -0
- package/overlays/gcloud/overlay.yml +14 -0
- package/overlays/gcloud/verify.sh +52 -0
- package/overlays/git-helpers/README.md +168 -0
- package/overlays/git-helpers/devcontainer.patch.json +33 -0
- package/overlays/git-helpers/overlay.yml +15 -0
- package/overlays/git-helpers/setup.sh +91 -0
- package/overlays/go/README.md +293 -0
- package/overlays/go/devcontainer.patch.json +43 -0
- package/overlays/go/overlay.yml +15 -0
- package/overlays/go/setup.sh +33 -0
- package/overlays/go/verify.sh +40 -0
- package/overlays/grafana/.env.example +9 -0
- package/overlays/grafana/README.md +462 -0
- package/overlays/grafana/dashboard-provider.yml +11 -0
- package/overlays/grafana/dashboards/observability-overview.json +263 -0
- package/overlays/grafana/devcontainer.patch.json +12 -0
- package/overlays/grafana/docker-compose.yml +27 -0
- package/overlays/grafana/grafana-datasources.yml +57 -0
- package/overlays/grafana/overlay.yml +21 -0
- package/overlays/grafana/verify.sh +34 -0
- package/overlays/jaeger/.env.example +7 -0
- package/overlays/jaeger/README.md +867 -0
- package/overlays/jaeger/devcontainer.patch.json +12 -0
- package/overlays/jaeger/docker-compose.yml +17 -0
- package/overlays/jaeger/overlay.yml +19 -0
- package/overlays/java/README.md +267 -0
- package/overlays/java/devcontainer.patch.json +44 -0
- package/overlays/java/overlay.yml +16 -0
- package/overlays/java/setup.sh +41 -0
- package/overlays/java/verify.sh +42 -0
- package/overlays/just/README.md +443 -0
- package/overlays/just/devcontainer.patch.json +3 -0
- package/overlays/just/overlay.yml +13 -0
- package/overlays/just/setup.sh +182 -0
- package/overlays/kubectl-helm/README.md +660 -0
- package/overlays/kubectl-helm/devcontainer.patch.json +10 -0
- package/overlays/kubectl-helm/overlay.yml +13 -0
- package/overlays/loki/.env.example +5 -0
- package/overlays/loki/README.md +1156 -0
- package/overlays/loki/devcontainer.patch.json +12 -0
- package/overlays/loki/docker-compose.yml +18 -0
- package/overlays/loki/loki-config.yaml +45 -0
- package/overlays/loki/overlay.yml +17 -0
- package/overlays/minio/.env.example +9 -0
- package/overlays/minio/README.md +639 -0
- package/overlays/minio/devcontainer.patch.json +30 -0
- package/overlays/minio/docker-compose.yml +28 -0
- package/overlays/minio/overlay.yml +18 -0
- package/overlays/minio/setup.sh +61 -0
- package/overlays/minio/verify.sh +64 -0
- package/overlays/mkdocs/README.md +309 -0
- package/overlays/mkdocs/devcontainer.patch.json +24 -0
- package/overlays/mkdocs/overlay.yml +15 -0
- package/overlays/modern-cli-tools/README.md +556 -0
- package/overlays/modern-cli-tools/devcontainer.patch.json +3 -0
- package/overlays/modern-cli-tools/overlay.yml +13 -0
- package/overlays/modern-cli-tools/setup.sh +153 -0
- package/overlays/mongodb/.env.example +9 -0
- package/overlays/mongodb/README.md +481 -0
- package/overlays/mongodb/devcontainer.patch.json +32 -0
- package/overlays/mongodb/docker-compose.yml +44 -0
- package/overlays/mongodb/overlay.yml +17 -0
- package/overlays/mongodb/verify.sh +48 -0
- package/overlays/mysql/.env.example +11 -0
- package/overlays/mysql/README.md +542 -0
- package/overlays/mysql/devcontainer.patch.json +34 -0
- package/overlays/mysql/docker-compose.yml +55 -0
- package/overlays/mysql/overlay.yml +16 -0
- package/overlays/mysql/verify.sh +48 -0
- package/overlays/nats/.env.example +5 -0
- package/overlays/nats/README.md +762 -0
- package/overlays/nats/devcontainer.patch.json +24 -0
- package/overlays/nats/docker-compose.yml +31 -0
- package/overlays/nats/overlay.yml +18 -0
- package/overlays/nats/verify.sh +50 -0
- package/overlays/ngrok/README.md +503 -0
- package/overlays/ngrok/devcontainer.patch.json +3 -0
- package/overlays/ngrok/overlay.yml +14 -0
- package/overlays/ngrok/setup.sh +125 -0
- package/overlays/nodejs/README.md +192 -0
- package/overlays/nodejs/devcontainer.patch.json +49 -0
- package/overlays/nodejs/global-packages.txt +16 -0
- package/overlays/nodejs/overlay.yml +14 -0
- package/overlays/nodejs/setup.sh +46 -0
- package/overlays/nodejs/verify.sh +32 -0
- package/overlays/otel-collector/.env.example +9 -0
- package/overlays/otel-collector/README.md +1257 -0
- package/overlays/otel-collector/devcontainer.patch.json +28 -0
- package/overlays/otel-collector/docker-compose.yml +22 -0
- package/overlays/otel-collector/otel-collector-config.yaml +68 -0
- package/overlays/otel-collector/overlay.yml +21 -0
- package/overlays/otel-collector/setup.sh +49 -0
- package/overlays/otel-demo-nodejs/.env.example +2 -0
- package/overlays/otel-demo-nodejs/Dockerfile-otel-demo-nodejs +17 -0
- package/overlays/otel-demo-nodejs/README.md +409 -0
- package/overlays/otel-demo-nodejs/devcontainer.patch.json +12 -0
- package/overlays/otel-demo-nodejs/docker-compose.yml +19 -0
- package/overlays/otel-demo-nodejs/overlay.yml +23 -0
- package/overlays/otel-demo-nodejs/package-otel-demo-nodejs.json +20 -0
- package/overlays/otel-demo-nodejs/server-otel-demo-nodejs.js +259 -0
- package/overlays/otel-demo-nodejs/tracing-otel-demo-nodejs.js +57 -0
- package/overlays/otel-demo-nodejs/verify.sh +31 -0
- package/overlays/otel-demo-python/.env.example +2 -0
- package/overlays/otel-demo-python/Dockerfile-otel-demo-python +16 -0
- package/overlays/otel-demo-python/README.md +82 -0
- package/overlays/otel-demo-python/app-otel-demo-python.py +208 -0
- package/overlays/otel-demo-python/devcontainer.patch.json +12 -0
- package/overlays/otel-demo-python/docker-compose.yml +19 -0
- package/overlays/otel-demo-python/overlay.yml +23 -0
- package/overlays/otel-demo-python/requirements-otel-demo-python.txt +4 -0
- package/overlays/otel-demo-python/verify.sh +31 -0
- package/overlays/playwright/README.md +629 -0
- package/overlays/playwright/devcontainer.patch.json +9 -0
- package/overlays/playwright/overlay.yml +13 -0
- package/overlays/postgres/.env.example +6 -0
- package/overlays/postgres/README.md +602 -0
- package/overlays/postgres/devcontainer.patch.json +21 -0
- package/overlays/postgres/docker-compose.yml +22 -0
- package/overlays/postgres/overlay.yml +15 -0
- package/overlays/postgres/verify.sh +45 -0
- package/overlays/powershell/README.md +314 -0
- package/overlays/powershell/devcontainer.patch.json +22 -0
- package/overlays/powershell/overlay.yml +13 -0
- package/overlays/powershell/setup.sh +29 -0
- package/overlays/powershell/verify.sh +38 -0
- package/overlays/pre-commit/README.md +263 -0
- package/overlays/pre-commit/devcontainer.patch.json +9 -0
- package/overlays/pre-commit/overlay.yml +16 -0
- package/overlays/pre-commit/setup.sh +129 -0
- package/overlays/presets/docs-site.yml +118 -0
- package/overlays/presets/fullstack.yml +181 -0
- package/overlays/presets/microservice.yml +118 -0
- package/overlays/presets/web-api.yml +109 -0
- package/overlays/prometheus/.env.example +5 -0
- package/overlays/prometheus/README.md +1246 -0
- package/overlays/prometheus/devcontainer.patch.json +12 -0
- package/overlays/prometheus/docker-compose.yml +22 -0
- package/overlays/prometheus/overlay.yml +17 -0
- package/overlays/prometheus/prometheus.yml +12 -0
- package/overlays/prometheus/verify.sh +34 -0
- package/overlays/promtail/.env.example +2 -0
- package/overlays/promtail/README.md +357 -0
- package/overlays/promtail/devcontainer.patch.json +5 -0
- package/overlays/promtail/docker-compose.yml +16 -0
- package/overlays/promtail/overlay.yml +17 -0
- package/overlays/promtail/promtail-config.yaml +60 -0
- package/overlays/promtail/verify.sh +31 -0
- package/overlays/pulumi/README.md +472 -0
- package/overlays/pulumi/devcontainer.patch.json +13 -0
- package/overlays/pulumi/overlay.yml +14 -0
- package/overlays/pulumi/verify.sh +31 -0
- package/overlays/python/README.md +919 -0
- package/overlays/python/devcontainer.patch.json +41 -0
- package/overlays/python/overlay.yml +12 -0
- package/overlays/python/requirements-overlay.txt +13 -0
- package/overlays/python/setup.sh +47 -0
- package/overlays/python/verify.sh +32 -0
- package/overlays/rabbitmq/.env.example +7 -0
- package/overlays/rabbitmq/README.md +680 -0
- package/overlays/rabbitmq/devcontainer.patch.json +28 -0
- package/overlays/rabbitmq/docker-compose.yml +30 -0
- package/overlays/rabbitmq/overlay.yml +18 -0
- package/overlays/rabbitmq/verify.sh +41 -0
- package/overlays/redis/.env.example +4 -0
- package/overlays/redis/README.md +776 -0
- package/overlays/redis/devcontainer.patch.json +21 -0
- package/overlays/redis/docker-compose.yml +21 -0
- package/overlays/redis/overlay.yml +15 -0
- package/overlays/redis/verify.sh +41 -0
- package/overlays/redpanda/.env.example +10 -0
- package/overlays/redpanda/README.md +703 -0
- package/overlays/redpanda/devcontainer.patch.json +37 -0
- package/overlays/redpanda/docker-compose.yml +67 -0
- package/overlays/redpanda/overlay.yml +21 -0
- package/overlays/redpanda/verify.sh +48 -0
- package/overlays/rust/README.md +299 -0
- package/overlays/rust/devcontainer.patch.json +39 -0
- package/overlays/rust/overlay.yml +15 -0
- package/overlays/rust/setup.sh +36 -0
- package/overlays/rust/verify.sh +51 -0
- package/overlays/sqlite/README.md +584 -0
- package/overlays/sqlite/devcontainer.patch.json +14 -0
- package/overlays/sqlite/overlay.yml +15 -0
- package/overlays/sqlite/setup.sh +27 -0
- package/overlays/sqlite/verify.sh +43 -0
- package/overlays/sqlserver/.env.example +6 -0
- package/overlays/sqlserver/README.md +592 -0
- package/overlays/sqlserver/devcontainer.patch.json +22 -0
- package/overlays/sqlserver/docker-compose.yml +32 -0
- package/overlays/sqlserver/overlay.yml +17 -0
- package/overlays/sqlserver/verify.sh +30 -0
- package/overlays/tempo/.env.example +5 -0
- package/overlays/tempo/README.md +273 -0
- package/overlays/tempo/devcontainer.patch.json +12 -0
- package/overlays/tempo/docker-compose.yml +20 -0
- package/overlays/tempo/overlay.yml +20 -0
- package/overlays/tempo/tempo-config.yaml +32 -0
- package/overlays/tempo/verify.sh +31 -0
- package/overlays/terraform/README.md +389 -0
- package/overlays/terraform/devcontainer.patch.json +15 -0
- package/overlays/terraform/overlay.yml +14 -0
- package/overlays/terraform/verify.sh +63 -0
- package/package.json +74 -0
- package/templates/README.md +285 -0
- package/templates/compose/.devcontainer/devcontainer.json +46 -0
- package/templates/compose/.devcontainer/docker-compose.yml +12 -0
- package/templates/compose/README.md +20 -0
- package/templates/plain/.devcontainer/devcontainer.json +35 -0
- package/templates/plain/README.md +21 -0
- package/tool/README.md +281 -0
- package/tool/schema/base-images.schema.json +43 -0
- package/tool/schema/base-templates.schema.json +34 -0
- package/tool/schema/config.schema.json +71 -0
- package/tool/schema/overlay-manifest.schema.json +86 -0
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
# Messaging System Comparison
|
|
2
|
+
|
|
3
|
+
This guide helps you choose the right messaging overlay for your development environment.
|
|
4
|
+
|
|
5
|
+
## Quick Comparison
|
|
6
|
+
|
|
7
|
+
| Feature | RabbitMQ | Redpanda | NATS |
|
|
8
|
+
| -------------------- | ----------------- | --------------- | ---------------------- |
|
|
9
|
+
| **Protocol** | AMQP | Kafka API | NATS Protocol |
|
|
10
|
+
| **Primary Use Case** | Task queues, RPC | Event streaming | Pub/sub, microservices |
|
|
11
|
+
| **Latency** | Low (ms) | Low (ms) | Very low (μs) |
|
|
12
|
+
| **Throughput** | High | Very high | Very high |
|
|
13
|
+
| **Persistence** | Yes | Yes | Yes (JetStream) |
|
|
14
|
+
| **Complexity** | Moderate | Moderate | Simple |
|
|
15
|
+
| **Resource Usage** | Moderate | Moderate-High | Low |
|
|
16
|
+
| **Management UI** | ✅ Built-in | ✅ Console | ⚠️ HTTP API only |
|
|
17
|
+
| **Best For** | Task distribution | Event logs | Real-time updates |
|
|
18
|
+
|
|
19
|
+
## When to Use RabbitMQ
|
|
20
|
+
|
|
21
|
+
**Choose RabbitMQ if you need:**
|
|
22
|
+
|
|
23
|
+
- ✅ Task queues with work distribution
|
|
24
|
+
- ✅ Complex routing patterns (exchanges, bindings)
|
|
25
|
+
- ✅ Request/reply (RPC) patterns
|
|
26
|
+
- ✅ Dead letter queues and retry logic
|
|
27
|
+
- ✅ Rich management UI
|
|
28
|
+
- ✅ AMQP protocol compatibility
|
|
29
|
+
|
|
30
|
+
**Use Cases:**
|
|
31
|
+
|
|
32
|
+
- Background job processing
|
|
33
|
+
- Order processing systems
|
|
34
|
+
- Email/notification queuing
|
|
35
|
+
- Microservices with RPC communication
|
|
36
|
+
- Integration with AMQP-based systems
|
|
37
|
+
|
|
38
|
+
**Example:**
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# Generate with RabbitMQ
|
|
42
|
+
container-superposition --stack compose --database rabbitmq --language nodejs
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## When to Use Redpanda
|
|
46
|
+
|
|
47
|
+
**Choose Redpanda if you need:**
|
|
48
|
+
|
|
49
|
+
- ✅ Event streaming (Kafka-compatible)
|
|
50
|
+
- ✅ High-throughput log aggregation
|
|
51
|
+
- ✅ Event sourcing and CQRS
|
|
52
|
+
- ✅ Stream processing
|
|
53
|
+
- ✅ Kafka API compatibility without Zookeeper
|
|
54
|
+
- ✅ Modern web console UI
|
|
55
|
+
|
|
56
|
+
**Use Cases:**
|
|
57
|
+
|
|
58
|
+
- Application event streaming
|
|
59
|
+
- Log aggregation from multiple services
|
|
60
|
+
- Change data capture (CDC)
|
|
61
|
+
- Real-time analytics pipelines
|
|
62
|
+
- Replacing Apache Kafka for local development
|
|
63
|
+
|
|
64
|
+
**Example:**
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# Generate with Redpanda
|
|
68
|
+
container-superposition --stack compose --database redpanda --language nodejs
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**Why Redpanda over Kafka?**
|
|
72
|
+
|
|
73
|
+
- No Zookeeper required (simpler setup)
|
|
74
|
+
- Lower resource usage for local development
|
|
75
|
+
- Faster startup times
|
|
76
|
+
- 100% Kafka API compatible
|
|
77
|
+
- Modern management console included
|
|
78
|
+
|
|
79
|
+
## When to Use NATS
|
|
80
|
+
|
|
81
|
+
**Choose NATS if you need:**
|
|
82
|
+
|
|
83
|
+
- ✅ Lightweight pub/sub messaging
|
|
84
|
+
- ✅ Very low latency (microseconds)
|
|
85
|
+
- ✅ Simple subject-based routing
|
|
86
|
+
- ✅ Request/reply patterns
|
|
87
|
+
- ✅ IoT and edge messaging
|
|
88
|
+
- ✅ Minimal resource footprint
|
|
89
|
+
|
|
90
|
+
**Use Cases:**
|
|
91
|
+
|
|
92
|
+
- Microservices communication
|
|
93
|
+
- Real-time updates and notifications
|
|
94
|
+
- Command/control distribution
|
|
95
|
+
- IoT device messaging
|
|
96
|
+
- Service mesh data plane
|
|
97
|
+
- Fast request/reply RPC
|
|
98
|
+
|
|
99
|
+
**Example:**
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
# Generate with NATS
|
|
103
|
+
container-superposition --stack compose --database nats --language nodejs
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
**Why NATS?**
|
|
107
|
+
|
|
108
|
+
- Simplest to set up and use
|
|
109
|
+
- Lowest resource usage
|
|
110
|
+
- Fastest message delivery
|
|
111
|
+
- Text-based protocol (easy debugging)
|
|
112
|
+
- JetStream adds persistence when needed
|
|
113
|
+
|
|
114
|
+
## Combining Messaging Systems
|
|
115
|
+
|
|
116
|
+
You can use multiple messaging systems together for different purposes:
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
# RabbitMQ for task queues + NATS for real-time updates
|
|
120
|
+
container-superposition --stack compose \
|
|
121
|
+
--database rabbitmq,nats \
|
|
122
|
+
--language nodejs
|
|
123
|
+
|
|
124
|
+
# Redpanda for event streaming + RabbitMQ for work queues
|
|
125
|
+
container-superposition --stack compose \
|
|
126
|
+
--database redpanda,rabbitmq \
|
|
127
|
+
--language nodejs,python
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**Common Patterns:**
|
|
131
|
+
|
|
132
|
+
- **Redpanda + RabbitMQ**: Event streaming for analytics + task queues for jobs
|
|
133
|
+
- **NATS + RabbitMQ**: Real-time notifications + background processing
|
|
134
|
+
- **All three**: Event streaming (Redpanda) + Task queues (RabbitMQ) + Service mesh (NATS)
|
|
135
|
+
|
|
136
|
+
## Performance Characteristics
|
|
137
|
+
|
|
138
|
+
### Latency
|
|
139
|
+
|
|
140
|
+
```txt
|
|
141
|
+
NATS: < 1ms (fastest - optimized for low latency)
|
|
142
|
+
RabbitMQ: 1-5ms (fast - good for most use cases)
|
|
143
|
+
Redpanda: 1-10ms (optimized for throughput over latency)
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Throughput
|
|
147
|
+
|
|
148
|
+
```txt
|
|
149
|
+
Redpanda: Highest (millions of messages/sec)
|
|
150
|
+
RabbitMQ: High (hundreds of thousands/sec)
|
|
151
|
+
NATS: High (hundreds of thousands/sec)
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Memory Usage (Single Instance)
|
|
155
|
+
|
|
156
|
+
```txt
|
|
157
|
+
NATS: ~50MB (minimal)
|
|
158
|
+
RabbitMQ: ~200MB (moderate)
|
|
159
|
+
Redpanda: ~1GB (higher - includes schema registry, admin API)
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Protocol Compatibility
|
|
163
|
+
|
|
164
|
+
### RabbitMQ
|
|
165
|
+
|
|
166
|
+
- **Primary**: AMQP 0-9-1
|
|
167
|
+
- **Also supports**: MQTT, STOMP (with plugins)
|
|
168
|
+
- **Client libraries**: All major languages
|
|
169
|
+
- **Interoperability**: Works with other AMQP systems
|
|
170
|
+
|
|
171
|
+
### Redpanda
|
|
172
|
+
|
|
173
|
+
- **Primary**: Kafka wire protocol
|
|
174
|
+
- **Also includes**: Schema Registry API, HTTP Proxy
|
|
175
|
+
- **Client libraries**: All Kafka client libraries work
|
|
176
|
+
- **Interoperability**: Drop-in Kafka replacement
|
|
177
|
+
|
|
178
|
+
### NATS
|
|
179
|
+
|
|
180
|
+
- **Primary**: NATS protocol (text-based)
|
|
181
|
+
- **Also supports**: WebSocket, TLS
|
|
182
|
+
- **Client libraries**: All major languages
|
|
183
|
+
- **Interoperability**: NATS-specific (not compatible with others)
|
|
184
|
+
|
|
185
|
+
## Decision Tree
|
|
186
|
+
|
|
187
|
+
```mermaid
|
|
188
|
+
graph TD
|
|
189
|
+
A[Need Kafka compatibility?] -->|YES| B[Redpanda]
|
|
190
|
+
A -->|NO| C[Need complex routing/RPC?]
|
|
191
|
+
C -->|YES| D[RabbitMQ]
|
|
192
|
+
C -->|NO| E[Need lowest latency?]
|
|
193
|
+
E -->|YES| F[NATS]
|
|
194
|
+
E -->|NO| G[Need task queues?]
|
|
195
|
+
G -->|YES| H[RabbitMQ]
|
|
196
|
+
G -->|NO| I[NATS - simplest]
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## Integration Examples
|
|
200
|
+
|
|
201
|
+
### RabbitMQ + Node.js
|
|
202
|
+
|
|
203
|
+
```javascript
|
|
204
|
+
const amqp = require('amqplib');
|
|
205
|
+
const connection = await amqp.connect('amqp://rabbitmq:5672');
|
|
206
|
+
const channel = await connection.createChannel();
|
|
207
|
+
|
|
208
|
+
// Publish to queue
|
|
209
|
+
await channel.assertQueue('tasks');
|
|
210
|
+
channel.sendToQueue('tasks', Buffer.from('Hello World'));
|
|
211
|
+
|
|
212
|
+
// Consume from queue
|
|
213
|
+
await channel.consume('tasks', (msg) => {
|
|
214
|
+
console.log('Received:', msg.content.toString());
|
|
215
|
+
channel.ack(msg);
|
|
216
|
+
});
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### Redpanda + Node.js
|
|
220
|
+
|
|
221
|
+
```javascript
|
|
222
|
+
const { Kafka } = require('kafkajs');
|
|
223
|
+
const kafka = new Kafka({ brokers: ['redpanda:9092'] });
|
|
224
|
+
|
|
225
|
+
// Producer
|
|
226
|
+
const producer = kafka.producer();
|
|
227
|
+
await producer.connect();
|
|
228
|
+
await producer.send({
|
|
229
|
+
topic: 'events',
|
|
230
|
+
messages: [{ value: 'Hello Redpanda' }],
|
|
231
|
+
});
|
|
232
|
+
|
|
233
|
+
// Consumer
|
|
234
|
+
const consumer = kafka.consumer({ groupId: 'my-group' });
|
|
235
|
+
await consumer.connect();
|
|
236
|
+
await consumer.subscribe({ topic: 'events' });
|
|
237
|
+
await consumer.run({
|
|
238
|
+
eachMessage: async ({ message }) => {
|
|
239
|
+
console.log('Received:', message.value.toString());
|
|
240
|
+
},
|
|
241
|
+
});
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### NATS + Node.js
|
|
245
|
+
|
|
246
|
+
```javascript
|
|
247
|
+
const { connect } = require('nats');
|
|
248
|
+
const nc = await connect({ servers: 'nats://nats:4222' });
|
|
249
|
+
|
|
250
|
+
// Publish
|
|
251
|
+
nc.publish('updates', 'Hello NATS');
|
|
252
|
+
|
|
253
|
+
// Subscribe
|
|
254
|
+
const sub = nc.subscribe('updates');
|
|
255
|
+
for await (const msg of sub) {
|
|
256
|
+
console.log('Received:', msg.string());
|
|
257
|
+
}
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
## See Also
|
|
261
|
+
|
|
262
|
+
- [Observability Workflow](observability-workflow.md) - Monitoring messaging systems
|
|
263
|
+
- [RabbitMQ Overlay](../overlays/rabbitmq/README.md)
|
|
264
|
+
- [Redpanda Overlay](../overlays/redpanda/README.md)
|
|
265
|
+
- [NATS Overlay](../overlays/nats/README.md)
|
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
# Messaging Overlays - Quick Start Examples
|
|
2
|
+
|
|
3
|
+
This guide provides quick-start commands for using the new messaging overlays.
|
|
4
|
+
|
|
5
|
+
## Basic Usage
|
|
6
|
+
|
|
7
|
+
### RabbitMQ (Task Queues)
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Create a Node.js project with RabbitMQ
|
|
11
|
+
container-superposition --stack compose --language nodejs --database rabbitmq
|
|
12
|
+
|
|
13
|
+
# Create a Python microservice with RabbitMQ
|
|
14
|
+
container-superposition --stack compose --language python --database rabbitmq
|
|
15
|
+
|
|
16
|
+
# Add observability to RabbitMQ setup
|
|
17
|
+
container-superposition --stack compose \
|
|
18
|
+
--language nodejs \
|
|
19
|
+
--database rabbitmq \
|
|
20
|
+
--observability prometheus,grafana
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
**Access:**
|
|
24
|
+
|
|
25
|
+
- AMQP: `amqp://guest:guest@rabbitmq:5672/`
|
|
26
|
+
- Management UI: `http://localhost:15672` (guest/guest)
|
|
27
|
+
|
|
28
|
+
### Redpanda (Event Streaming)
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# Create a Node.js event streaming app
|
|
32
|
+
container-superposition --stack compose --language nodejs --database redpanda
|
|
33
|
+
|
|
34
|
+
# Create a Go data pipeline with Redpanda
|
|
35
|
+
container-superposition --stack compose --language go --database redpanda
|
|
36
|
+
|
|
37
|
+
# Add observability for stream monitoring
|
|
38
|
+
container-superposition --stack compose \
|
|
39
|
+
--language nodejs \
|
|
40
|
+
--database redpanda \
|
|
41
|
+
--observability prometheus,grafana
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Access:**
|
|
45
|
+
|
|
46
|
+
- Kafka API: `redpanda:9092`
|
|
47
|
+
- Console UI: `http://localhost:8080`
|
|
48
|
+
- Schema Registry: `http://redpanda:8081`
|
|
49
|
+
|
|
50
|
+
### NATS (Pub/Sub Messaging)
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# Create a microservice with NATS
|
|
54
|
+
container-superposition --stack compose --language nodejs --database nats
|
|
55
|
+
|
|
56
|
+
# Create a Python IoT app with NATS
|
|
57
|
+
container-superposition --stack compose --language python --database nats
|
|
58
|
+
|
|
59
|
+
# Microservices with NATS and database
|
|
60
|
+
container-superposition --stack compose \
|
|
61
|
+
--language nodejs \
|
|
62
|
+
--database nats,postgres
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**Access:**
|
|
66
|
+
|
|
67
|
+
- Client: `nats://nats:4222`
|
|
68
|
+
- Monitoring: `http://localhost:8222`
|
|
69
|
+
|
|
70
|
+
## Multi-Service Examples
|
|
71
|
+
|
|
72
|
+
### Microservices Architecture
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
# Complete microservices stack
|
|
76
|
+
container-superposition --stack compose \
|
|
77
|
+
--language nodejs \
|
|
78
|
+
--database postgres,rabbitmq,redis \
|
|
79
|
+
--observability otel-collector,jaeger,prometheus,grafana
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Services:**
|
|
83
|
+
|
|
84
|
+
- PostgreSQL: Persistent data storage
|
|
85
|
+
- RabbitMQ: Asynchronous task queues
|
|
86
|
+
- Redis: Session/cache storage
|
|
87
|
+
- OTEL + Jaeger: Distributed tracing
|
|
88
|
+
- Prometheus + Grafana: Metrics and dashboards
|
|
89
|
+
|
|
90
|
+
### Event-Driven Architecture
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Event streaming with analytics
|
|
94
|
+
container-superposition --stack compose \
|
|
95
|
+
--language nodejs,python \
|
|
96
|
+
--database redpanda,postgres \
|
|
97
|
+
--observability prometheus,grafana
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Use Case:**
|
|
101
|
+
|
|
102
|
+
- Redpanda: Event log aggregation
|
|
103
|
+
- PostgreSQL: Analytics database
|
|
104
|
+
- Node.js: Event producers/consumers
|
|
105
|
+
- Python: Data processing pipelines
|
|
106
|
+
|
|
107
|
+
### Real-Time Messaging
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
# Fast pub/sub with persistence
|
|
111
|
+
container-superposition --stack compose \
|
|
112
|
+
--language go \
|
|
113
|
+
--database nats,postgres \
|
|
114
|
+
--cloud-tools kubectl-helm
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**Use Case:**
|
|
118
|
+
|
|
119
|
+
- NATS: Real-time updates
|
|
120
|
+
- PostgreSQL: Event sourcing
|
|
121
|
+
- Go: High-performance services
|
|
122
|
+
- Kubernetes: Deployment platform
|
|
123
|
+
|
|
124
|
+
### Hybrid Messaging
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
# All three messaging systems
|
|
128
|
+
container-superposition --stack compose \
|
|
129
|
+
--language nodejs \
|
|
130
|
+
--database rabbitmq,nats,redpanda,postgres
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
**Use Case:**
|
|
134
|
+
|
|
135
|
+
- RabbitMQ: Background jobs
|
|
136
|
+
- NATS: Service-to-service communication
|
|
137
|
+
- Redpanda: Event log aggregation
|
|
138
|
+
- PostgreSQL: Persistent storage
|
|
139
|
+
|
|
140
|
+
## Port Offset for Multiple Instances
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
# First instance (default ports)
|
|
144
|
+
container-superposition --stack compose \
|
|
145
|
+
--database rabbitmq \
|
|
146
|
+
--output ./project1
|
|
147
|
+
|
|
148
|
+
# Second instance (offset by 100)
|
|
149
|
+
container-superposition --stack compose \
|
|
150
|
+
--database rabbitmq \
|
|
151
|
+
--port-offset 100 \
|
|
152
|
+
--output ./project2
|
|
153
|
+
|
|
154
|
+
# Third instance (offset by 200)
|
|
155
|
+
container-superposition --stack compose \
|
|
156
|
+
--database rabbitmq \
|
|
157
|
+
--port-offset 200 \
|
|
158
|
+
--output ./project3
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
**Ports:**
|
|
162
|
+
|
|
163
|
+
- Project 1: RabbitMQ on 5672, Management on 15672
|
|
164
|
+
- Project 2: RabbitMQ on 5772, Management on 15772
|
|
165
|
+
- Project 3: RabbitMQ on 5872, Management on 15872
|
|
166
|
+
|
|
167
|
+
## Language-Specific Examples
|
|
168
|
+
|
|
169
|
+
### Node.js + RabbitMQ
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
container-superposition --stack compose \
|
|
173
|
+
--language nodejs \
|
|
174
|
+
--database rabbitmq,postgres \
|
|
175
|
+
--dev-tools docker-sock
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
**Install client:**
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
npm install amqplib
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### Python + Redpanda
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
container-superposition --stack compose \
|
|
188
|
+
--language python \
|
|
189
|
+
--database redpanda,postgres
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
**Install client:**
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
pip install confluent-kafka
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Go + NATS
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
container-superposition --stack compose \
|
|
202
|
+
--language go \
|
|
203
|
+
--database nats,redis
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
**Install client:**
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
go get github.com/nats-io/nats.go
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### .NET + All Three
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
container-superposition --stack compose \
|
|
216
|
+
--language dotnet \
|
|
217
|
+
--database rabbitmq,redpanda,nats,sqlserver
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
**Install clients:**
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
dotnet add package RabbitMQ.Client
|
|
224
|
+
dotnet add package Confluent.Kafka
|
|
225
|
+
dotnet add package NATS.Client
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## Cloud Deployment Examples
|
|
229
|
+
|
|
230
|
+
### AWS with RabbitMQ
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
container-superposition --stack compose \
|
|
234
|
+
--language nodejs \
|
|
235
|
+
--database rabbitmq,postgres \
|
|
236
|
+
--cloud-tools aws-cli,terraform
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### Azure with Redpanda
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
container-superposition --stack compose \
|
|
243
|
+
--language dotnet \
|
|
244
|
+
--database redpanda,sqlserver \
|
|
245
|
+
--cloud-tools azure-cli,terraform
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### GCP with NATS
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
container-superposition --stack compose \
|
|
252
|
+
--language go \
|
|
253
|
+
--database nats,postgres \
|
|
254
|
+
--cloud-tools gcloud,kubectl-helm
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
### Kubernetes-Ready
|
|
258
|
+
|
|
259
|
+
```bash
|
|
260
|
+
container-superposition --stack compose \
|
|
261
|
+
--language nodejs \
|
|
262
|
+
--database nats,postgres \
|
|
263
|
+
--cloud-tools kubectl-helm,terraform \
|
|
264
|
+
--observability otel-collector,prometheus
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
## Development Workflow Examples
|
|
268
|
+
|
|
269
|
+
### Local Development
|
|
270
|
+
|
|
271
|
+
```bash
|
|
272
|
+
# Minimal setup for local dev
|
|
273
|
+
container-superposition --stack compose \
|
|
274
|
+
--language nodejs \
|
|
275
|
+
--database rabbitmq
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### Integration Testing
|
|
279
|
+
|
|
280
|
+
```bash
|
|
281
|
+
# Full services for testing
|
|
282
|
+
container-superposition --stack compose \
|
|
283
|
+
--language nodejs \
|
|
284
|
+
--database rabbitmq,postgres,redis \
|
|
285
|
+
--dev-tools playwright
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
### CI/CD Pipeline
|
|
289
|
+
|
|
290
|
+
```bash
|
|
291
|
+
# Automated testing environment
|
|
292
|
+
container-superposition --stack compose \
|
|
293
|
+
--language nodejs \
|
|
294
|
+
--database nats,postgres \
|
|
295
|
+
--dev-tools docker-in-docker,pre-commit
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
## Interactive Mode
|
|
299
|
+
|
|
300
|
+
For guided selection, run without arguments:
|
|
301
|
+
|
|
302
|
+
```bash
|
|
303
|
+
container-superposition
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
The interactive questionnaire will let you select:
|
|
307
|
+
|
|
308
|
+
1. Base template (compose recommended for messaging)
|
|
309
|
+
2. Base image (Debian Bookworm recommended)
|
|
310
|
+
3. Language overlays
|
|
311
|
+
4. Database/messaging overlays (select multiple)
|
|
312
|
+
5. Observability tools
|
|
313
|
+
6. Cloud tools
|
|
314
|
+
7. Dev tools
|
|
315
|
+
8. Port offset (if needed)
|
|
316
|
+
|
|
317
|
+
## Verification
|
|
318
|
+
|
|
319
|
+
After generating your devcontainer:
|
|
320
|
+
|
|
321
|
+
```bash
|
|
322
|
+
# Open in VS Code
|
|
323
|
+
code your-project/
|
|
324
|
+
|
|
325
|
+
# VS Code will prompt: "Reopen in Container"
|
|
326
|
+
# Click to build and start all services
|
|
327
|
+
|
|
328
|
+
# Verify services are running
|
|
329
|
+
docker-compose ps
|
|
330
|
+
|
|
331
|
+
# Check RabbitMQ
|
|
332
|
+
curl http://localhost:15672
|
|
333
|
+
|
|
334
|
+
# Check Redpanda Console
|
|
335
|
+
curl http://localhost:8080
|
|
336
|
+
|
|
337
|
+
# Check NATS monitoring
|
|
338
|
+
curl http://localhost:8222/varz
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
## Next Steps
|
|
342
|
+
|
|
343
|
+
1. Review generated `.devcontainer/devcontainer.json`
|
|
344
|
+
2. Customize `.env` file (copy from `.env.example`)
|
|
345
|
+
3. Review service-specific READMEs:
|
|
346
|
+
- `overlays/rabbitmq/README.md`
|
|
347
|
+
- `overlays/redpanda/README.md`
|
|
348
|
+
- `overlays/nats/README.md`
|
|
349
|
+
4. Check [messaging-comparison.md](messaging-comparison.md) for choosing between systems
|
|
350
|
+
5. Start coding!
|
|
351
|
+
|
|
352
|
+
## Troubleshooting
|
|
353
|
+
|
|
354
|
+
**Port conflicts?**
|
|
355
|
+
|
|
356
|
+
```bash
|
|
357
|
+
# Use port offset
|
|
358
|
+
container-superposition --port-offset 100 ...
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
**Service not starting?**
|
|
362
|
+
|
|
363
|
+
```bash
|
|
364
|
+
# Check Docker logs
|
|
365
|
+
docker-compose logs rabbitmq
|
|
366
|
+
docker-compose logs redpanda
|
|
367
|
+
docker-compose logs nats
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
**Need to change configuration?**
|
|
371
|
+
|
|
372
|
+
```bash
|
|
373
|
+
# Edit .devcontainer/.env
|
|
374
|
+
cd .devcontainer
|
|
375
|
+
cp .env.example .env
|
|
376
|
+
# Edit .env with your settings
|
|
377
|
+
# Rebuild container in VS Code
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
## Additional Resources
|
|
381
|
+
|
|
382
|
+
- **Full Documentation**: See individual overlay READMEs
|
|
383
|
+
- **Comparison Guide**: [messaging-comparison.md](messaging-comparison.md)
|
|
384
|
+
- **Code Examples**: Each README includes Node.js, Python, Go, .NET examples
|
|
385
|
+
- **Main Documentation**: `README.md` in repository root
|