This repository serves as a working collection of examples to support the evaluation and design of AsyncAPI support in Arazzo 1.1.0.
Each example demonstrates how API workflows can span synchronous and asynchronous systems using Arazzo's declarative syntax. It includes:
- Realistic OpenAPI and AsyncAPI documents
- Composed Arazzo workflow definitions (.arazzo.yaml)
- Support for both send and receive step types, across diverse protocols
- Use of new Arazzo features including
timeout,correlationId,action, anddependsOn
These examples are intended to validate protocol-level fit, discover modeling patterns, and shape spec guidance and tooling implementation strategies.
| Protocol | send |
receive |
Arazzo Fit | Notes |
|---|---|---|---|---|
| Kafka | ✅ | ✅ | ✅ | Well-supported pub-sub; structured JSON or binary payloads possible. |
| AMQP | ✅ | ✅ | ✅ | Strong JSON alignment via RabbitMQ; works well with events. |
| MQTT / MQTT 5 | ✅ | ✅ | ✅ | Great for lightweight telemetry and IoT messaging. |
| NATS | ✅ | ✅ | ✅ | Simple and fast messaging with subject routing. |
| WebSocket | ✅ | ✅ | ✅ | Bi-directional real-time channels; suited for chat, UX events. |
| HTTP (webhooks) | ❌ (*) | ✅ | ✅ | Receive-only event triggers; modeled using AsyncAPI or OpenAPI. In Arazzo, send can be used when the workflow acts as the webhook client (e.g. issuing a POST to an external webhook URL). |
| SNS | ✅ | ✅ | ✅ | Supports send and receive; receive typically via subscriber integration (e.g. SQS, Lambda) |
| SQS | ✅ | ✅ | Supports send and receive; receive typically via polling. Commonly paired with SNS. | |
| SSE | ❌ | ✅ | One-way streaming from server to client over HTTP. |
Notes
- Media-type flexibility: Arazzo supports any contentType, including application/xml, application/octet-stream, etc. Binary messages are fine if they do not require selectors.
- If introspection (e.g. for
successCriteriaoroutputs) is needed, then JSON Schema or structured payloads are required. - Tooling should provide warnings if selector logic is used with non-structured content.
Recommendation would be to consider based on community feedback or vendor extension success
| Protocol | send |
receive |
Arazzo Fit | Notes |
|---|---|---|---|---|
| STOMP | ✅ | ✅ | Text-based protocol; JSON support varies. | |
| Solace | ✅ | ✅ | Proprietary brokers; support varies by use. | |
| Redis Pub/Sub | ✅ | ✅ | Requires runtime normalization for selector support. | |
| Google Pub/Sub | ✅ | ✅ | Works well with JSON, but schema registration needed. | |
| Pulsar | ✅ | ✅ | Advanced streaming; ensure messages are introspectable. | |
| Mercure | ❌ | ✅ | Push-focused pub-sub for browser apps. |
- gRPC
- Avro / Protobuf / Thrift