github.com/lukas8219/rinha-de-backend-2025
main / published Oct 23, 2025 / repository
Crystal, LavinMQ, NGINX, Circuit Breaker
Rinha de Backend 2025
Crystal, LavinMQ, NGINX.
API
- BenchmarkConfig
Benchmark configuration
- BenchmarkResult
Benchmark results
- CircuitBreakerWrapper
- Consumer
- FastJsonGenerator
Crystal wrapper for easy usage
- HttpClient
- HttpClientStats
- PaymentProcessorRequest
- PaymentRequest
- PubSubClient
- PubSubManager
This is a hack to deal with this error app1-1 | 2025-07-28T23:49:06.555446Z ERROR - Error processing payment app1-1 | Can't transfer fd=17 to another polling event loop with pending reader/writer fibers (RuntimeError) app1-1 | from usr/share/crystal/src/crystal/system/unix/epoll.cr:15:13 in 'take_ownership' app1-1 | from usr/share/crystal/src/crystal/event_loop/polling/waiters.cr:16:5 in 'unbuffered_write' app1-1 | from usr/share/crystal/src/io/buffered.cr:252:5 in '??' app1-1 | from app/lib/amqp-client/src/amqp-client/connection.cr:210:9 in 'basic_publish' app1-1 | from app/src/server.cr:46:5 in '->' app1-1 | from app/lib/kemal/src/kemal/route.cr:12:9 in '->' app1-1 | from app/lib/kemal/src/kemal/route_handler.cr:52:39 in 'call' app1-1 | from app/lib/kemal/src/kemal/filter_handler.cr:28:7 in 'call' app1-1 | from app/lib/kemal/src/kemal/static_file_handler.cr:11:11 in 'call' app1-1 | from usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' app1-1 | from usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' app1-1 | from usr/share/crystal/src/http/server/request_processor.cr:51:11 in 'handle_client' app1-1 | from usr/share/crystal/src/fiber.cr:170:11 in 'run' app1-1 | from ???
- Skiplist
Crystal wrapper class for easier usage
- SkiplistBenchmark
- SkiplistRangeResult
Structure to hold range scan results in Crystal