# RabbitMQ

Lightweight, dependency-free RabbitMQ emulator speaking the AMQP 0-9-1 binary
protocol.

| Key | Value |
|-----|-------|
| Port | 5672 |
| Protocol | AMQP 0-9-1 (TCP) |
| Size | ~90 KB |
| Startup | fast |

## Default Connection

```
amqp://parlel:parlel@localhost:5672
```

## Supported Operations

| Area | Operations |
|------|-----------|
| Connection | Handshake (Connection.Start/Tune/Open), channels |
| Queues | Queue.Declare, Queue.Delete |
| Exchanges | Exchange.Declare, Exchange.Delete |
| Messaging | Basic.Publish (push), Basic.Get / Basic.Consume (consume) |

## Usage Examples

```typescript
const instance = await startParallel({ services: [{ name: "rabbitmq" }] });
const port = instance.services.get("rabbitmq").port;

import amqp from "amqplib";
const conn = await amqp.connect(`amqp://parlel:parlel@localhost:${port}`);
const ch = await conn.createChannel();
await ch.assertQueue("tasks");
ch.sendToQueue("tasks", Buffer.from("hello"));
const msg = await ch.get("tasks");
```

## Access via Parlel Sandbox

RabbitMQ uses the binary AMQP protocol, so `parlel_execute` does not drive it.
Inside a sandbox, open the SSH tunnel shown in the Connect panel and point a
native AMQP client (e.g. `amqplib`) at `localhost:5672`.

## Surface coverage

This emulator faithfully replicates the API surface most application code and agents exercise. Anything below the supported lines is either an intentional design choice for a fast, zero-cost local emulator (✓ By design) or a candidate for a future release (⟳ Roadmap) — never a silent inaccuracy.

Legend: ✅ fully supported · ◐ accepted (stored, not strictly enforced) · ✓ by design · ⟳ on the roadmap.

| Feature | Status |
|---------|--------|
| Queues / exchanges / publish / consume | Supported |
| Routing keys / bindings / topic exchanges | Simplified |
| Acknowledgements / prefetch / DLX | Not enforced |
| TLS / vhosts | Not supported |
