convex-mq

A typed message queue for Convex with reactive WebSocket consumers, automatic retries, and visibility timeouts for reliable async processing.

Installation

npm install convex-mq

About convex-mq

A typed message queue component for Convex with reactive consumers, visibility timeouts, and automatic retries.

Benefits

Use cases

how to add background job processing to Convex

ConvexMQ provides a typed message queue that lets you publish messages from Convex mutations and consume them from external services. It handles automatic retries, visibility timeouts, and dead letter queues for reliable job processing.

Convex message queue with retries

ConvexMQ includes configurable automatic retries with exponential backoff and dead letter handling. Messages that exceed max attempts are returned with full error context for manual intervention.

real-time message consumption in Convex

ConvexMQ supports reactive consumption via WebSocket subscriptions that process messages immediately when published. This eliminates polling delays and reduces server load compared to traditional queue polling.

typed message queues for TypeScript Convex apps

ConvexMQ generates fully typed API exports from your message schema definition. All publish, claim, ack, and nack operations are type-safe with IntelliSense support across your entire application.

Frequently asked questions

What's the difference between component mode and library mode in ConvexMQ?

ConvexMQ component mode creates isolated tables with simple setup but no custom indexes. Library mode lets you define the queue table in your own schema with full index support and filtered consumption by any field.

How does ConvexMQ handle message reliability and failures?

ConvexMQ uses visibility timeouts to automatically return unclaimed messages to the queue, configurable retry limits with automatic requeuing, and lease tokens to prevent stale consumers from acknowledging messages they no longer own.

Can I filter messages when consuming from ConvexMQ?

ConvexMQ library mode supports filtered consumption using custom indexes. You can consume subsets of messages based on any indexed field, like processing only messages for specific workers or priority levels.

How do I secure ConvexMQ in production?

ConvexMQ supports Convex internal functions for deploy-key-only consumer access and custom function builders for authenticated publishing. This ensures only your server-side consumers can claim messages while requiring user auth for publishing.

Does ConvexMQ support batch operations?

ConvexMQ provides publishBatch for enqueueing multiple messages atomically and batch claiming for processing multiple messages together. This reduces function call overhead and improves throughput for high-volume scenarios.

Links