{"repo":"zeybek/ulak","free":true,"listed":false,"github":"https://github.com/zeybek/ulak","clone":"git clone https://github.com/zeybek/ulak.git","description":"PostgreSQL extension for reliable async message delivery to HTTP, Kafka, MQTT, Redis, AMQP & NATS — atomically committed with your transaction, using the transactional outbox pattern","language":"C","stars":15,"topics":["amqp","background-worker","event-driven","extension","http","kafka","message-queue","mqtt","postgres","postgresql"],"license":null,"category":"databases-storage","readme_excerpt":"ulak ulak is a PostgreSQL extension for the transactional outbox pattern. It solves the dual-write problem by inserting messages into ulak.queue inside the same transaction as your business data, then dispatching them asynchronously through PostgreSQL background workers. You get exactly-once writes to the local queue and at-least-once delivery to external systems. ulak means \"messenger\". The point of the project is to keep enqueue atomic with your data, while moving retries, backoff, circuit breaking, DLQ handling, and redrive out of application code. Why ulak - Atomic enqueue : ulak.send() and ulak.publish() write to the queue inside your transaction. If the transaction rolls back, the message never exists. - Database-native execution model : background workers poll ulak.queue with FOR UPDATE SKIP LOCKED and dispatch without requiring a separate CDC stack. - Operational safety built in : retry policy, stale-processing recovery, circuit breaker, DLQ, archive, health checks, and redrive are part of the engine. - Protocol adapters, one queue model : HTTP is built in; Kafka, MQTT, Redis Streams, AMQP, and NATS are optional adapters behind the same lifecycle. Use ulak when - PostgreSQL is your source of truth and you want outbox semantics close to the data. - You need reliable webhook or broker delivery without rebuilding retry and DLQ logic in every service. - You prefer database-native operations over an external CDC pipeline. Do not use ulak when - You already operate a CDC st","default_branch":null,"files":null,"tree":[],"storefront":"/r/zeybek","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/zeybek/ulak/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}