# SQ-014: SDK Producer **Status:** `[ ] TODO` **Blocked by:** SQ-010 **Priority:** Medium ## Description Ergonomic Rust producer client in sq-sdk. Handles connection management, batching, and retry logic. ## Files to Create/Modify - `crates/sq-sdk/src/lib.rs` - re-exports - `crates/sq-sdk/src/connection.rs` - gRPC channel management - `crates/sq-sdk/src/producer.rs` - Producer with batching, linger timer, retry - `crates/sq-sdk/src/error.rs` - SqError type ## Producer API ```rust pub struct ProducerConfig { pub server_addresses: Vec, pub default_ack_mode: AckMode, pub max_retries: u32, pub retry_backoff_ms: u64, } pub struct Producer { /* ... */ } impl Producer { pub async fn connect(config: ProducerConfig) -> Result; pub async fn send(&self, topic: &str, key: Option<&[u8]>, value: &[u8]) -> Result; pub async fn send_batch(&self, messages: Vec) -> Result, SqError>; } ``` ## Acceptance Criteria - [ ] Producer connects to running server, sends message, gets offset back - [ ] Send batch: all messages get sequential offsets - [ ] Connection failure: returns appropriate error - [ ] Multiple server addresses: round-robin or failover