Producer API¶
The Producer API allows you to send messages to queues. pgqrs provides both high-level (ephemeral) and low-level (managed) APIs for producing messages.
Quick Start (Ephemeral Producer)¶
Send a single message without creating a managed worker.
use pgqrs;
use serde_json::json;
let store = pgqrs::connect("postgresql://localhost/mydb").await?;
// Builder API for simple one-off messages
let ids = pgqrs::enqueue()
.message(&json!({"task": "send_email", "to": "[email protected]"}))
.to("tasks")
.execute(&store)
.await?;
println!("Enqueued message ID: {}", ids[0]);
# Python bindings currently require a managed producer object
import pgqrs
store = await pgqrs.connect("postgresql://localhost/mydb")
# Create a simple producer instance
producer = await store.producer("tasks")
# Enqueue message
msg_id = await producer.enqueue({
"task": "send_email",
"to": "[email protected]"
})
print(f"Enqueued message ID: {msg_id}")
Managed Producers¶
For long-running services, creating a managed producer allows for worker tracking and monitoring.
Enqueue Options¶
Batch Messages¶
Send multiple messages in a single transaction.
Delayed Messages¶
Schedule a message for future processing.
Worker Lifecycle¶
Managed producers implement the Worker trait (Rust) for lifecycle management.
API Reference¶
Constructor / Builder¶
pgqrs::producer(hostname, port, queue) -> ProducerBuilder
store.producer(queue, hostname="localhost", port=0) -> Producer
Methods¶
| Method | Rust | Python | Description |
|---|---|---|---|
| Enqueue | .enqueue()...execute() |
enqueue(payload) |
Send single message |
| Batch | .messages(&vec)... |
Loop or batch helper | Send multiple messages |
| Delay | .delay(seconds)... |
enqueue_delayed(payload, seconds) |
Schedule message |
| Cleanup | shutdown() |
Automatic | Stop worker |