mq-bridge
Emerging · Rust · standard configuration · completeness 3/4
mq-bridge async message-bridging library run as an HTTP server. A single catch-all http->response route dispatches on request metadata and replies through mq-bridge's inline-response fast path; hyper-util's auto connection builder serves HTTP/1.1 and HTTP/2 prior-knowledge (h2c) on the cleartext port (8080) and HTTP/2-over-TLS (ALPN h2) on 8443. Postgres via the library's re-exported sqlx for async-db and crud (in-process cache-aside, one-second TTL), fortunes rendered per request with the Askama template engine, dataset read from /data/dataset.json, static assets from /data/static, response compression negotiated per request by the library from Accept-Encoding (zstd > gzip > lz4).
Achievements
🥈 1 Silver · 🥉 2 Bronze. Top three of a field, taken in this entry's own league: the family composite, the same composite among entries written in the same language, and each test profile it is scored on. Every field is the one the badges publish, so a medal and a badge always say the same thing. How medals are awarded.
| Medal | Award | Field | Rank |
|---|---|---|---|
| 🥈 Silver | Test profile | Efficiency · Latency-10K | 2 of 71 |
| 🥉 Bronze | Within its language | Rust · HTTP/1.1 | 3 of 7 |
| 🥉 Bronze | Within its language | Rust · WebSocket | 3 of 4 |
Composite rank
Each profile of a family is worth 100 to the entry that leads it, and the composite is the sum over the family, less 2.5% for each of routing, middleware, request and response the entry does not do for you - its completeness factor, which the WebSocket and gRPC families do not carry. The field is this entry's own league: engines and reverse proxies are scored apart from frameworks. How it works.
| Family | Rank | Composite |
|---|---|---|
| HTTP/1.1 | 7 of 71 | 4610 |
| HTTP/2 | 11 of 18 | 514 |
| WebSocket | 11 of 15 | 427 |
Every result
Alpha Round, 29 runs. Requests per second is the best of three; latency, CPU and memory come from that run.
| Category | Profile | Conns | Req/sec | Avg | p99 | CPU | Memory |
|---|---|---|---|---|---|---|---|
| Connection | Baseline | 4,096 | 1,157,017 | 3.54ms | 6.80ms | 4293.0% | 171MiB |
| Connection | Pipelined | 4,096 | 5,455,296 | 12.01ms | 38.90ms | 6306.0% | 173MiB |
| Connection | Short-lived | 4,096 | 719,836 | 5.68ms | 23.80ms | 5455.0% | 245MiB |
| Concurrency | Async Delay | 32,000 | 314,326 | 100.51ms | 148.50ms | 5154.7% | 1.2GiB |
| Efficiency | Latency-10K | 1,024 | 9,983 | 74.0us | 110.0us | 24.0% | 83MiB |
| Efficiency | Latency-1M | 1,024 | 997,486 | 727.7us | 2659.0us | 3190.0% | 86MiB |
| Efficiency | Latency-500K/8 | 1,024 | 317,972 | 3603396.5us | 7170048.0us | 783.6% | 56MiB |
| Workload | JSON Comp | 4,096 | 385,765 | 10.60ms | 32.70ms | 6522.1% | 257MiB |
| Workload | JSON Comp | 16,384 | 377,580 | 42.78ms | 82.30ms | 6566.3% | 770MiB |
| Workload | JSON TLS | 4,096 | 941,923 | 4.53ms | 56.50ms | 5530.7% | 251MiB |
| Workload | 8Gbit | 512 | 49,161 | 108.5us | 156.0us | 259.4% | 88MiB |
| Workload | Static TLS | 1,024 | 103,599 | 10.27ms | 66.65ms | 3869.2% | 291MiB |
| Database | Async DB | 1,024 | 134,125 | 7.09ms | 9.06ms | 3285.3% | 161MiB |
| Database | Fortunes | 1,024 | 124,919 | 6.85ms | 9.21ms | 5143.2% | 171MiB |
| HTTP/2 | Baseline | 256 | 672,775 | 37.15ms | 139.93ms | 4696.2% | 271MiB |
| HTTP/2 | Baseline | 1,024 | 596,063 | 158.01ms | 559.95ms | 4737.5% | 800MiB |
| HTTP/2 | Static | 256 | 102,096 | 78.39ms | 443.82ms | 3544.2% | 302MiB |
| HTTP/2 | Static | 1,024 | 97,656 | 314.51ms | 859.29ms | 3504.2% | 966MiB |
| HTTP/2 | Baseline (h2c) | 256 | 659,355 | 38.24ms | 138.87ms | 4720.3% | 266MiB |
| HTTP/2 | Baseline (h2c) | 1,024 | 596,716 | 163.76ms | 568.52ms | 4822.3% | 910MiB |
| HTTP/2 | Baseline (h2c) | 4,096 | 541,124 | 626.89ms | 3.08s | 4705.9% | 2.4GiB |
| HTTP/2 | JSON (h2c) | 1,024 | 620,625 | 50.71ms | 166.87ms | 4124.3% | 387MiB |
| HTTP/2 | JSON (h2c) | 4,096 | 565,675 | 213.23ms | 837.74ms | 4061.2% | 1.1GiB |
| WebSocket | Echo | 512 | 1,172,794 | 436us | 1.05ms | 1824.5% | 45MiB |
| WebSocket | Echo | 4,096 | 1,362,540 | 3.00ms | 4.62ms | 2209.3% | 155MiB |
| WebSocket | Echo | 16,384 | 1,098,016 | 14.70ms | 16.60ms | 2010.1% | 450MiB |
| WebSocket | Echo Pipelined | 512 | 5,265,146 | 1.55ms | 4.00ms | 6263.6% | 41MiB |
| WebSocket | Echo Pipelined | 4,096 | 5,655,074 | 11.56ms | 36.90ms | 6446.2% | 156MiB |
| WebSocket | Echo Pipelined | 16,384 | 5,559,653 | 45.83ms | 84.40ms | 6667.1% | 460MiB |
Compared with
The Rust entries around mq-bridge on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.
| Entry | Composite | vs mq-bridge | |
|---|---|---|---|
| actix | 6880 | +49% | head to head |
| ntex | 5956 | +29% | head to head |
| tokio | 4738 | +3% | head to head |
| axum | 4494 | -3% | head to head |
| tokio-uring | 3462 | -25% | head to head |
Compare mq-bridge with any Rust entry · Compare mq-bridge with any entry, in any language · Every Rust entry, ranked
Results updated · How the benchmark is run · The machine · Add or fix an entry