pub struct TaskProducer { /* private fields */ }Expand description
任务生产者
将任务提交到 Kafka 主题,并委托 TaskStorage 持久化任务日志与队列记录。
不持有任何 SQL 语句或数据库表名——完全由 TaskStorage 实现方控制。
Implementations§
Source§impl TaskProducer
impl TaskProducer
Sourcepub fn new(
brokers: &str,
storage: Arc<dyn TaskStorage>,
registry: HandlerRegistry,
) -> Result<Self, String>
pub fn new( brokers: &str, storage: Arc<dyn TaskStorage>, registry: HandlerRegistry, ) -> Result<Self, String>
创建任务生产者
brokers: Kafka broker 地址storage: 由业务方实现的持久化接口registry: 已注册 handler 的注册中心
返回 Err 而非 panic,便于外部处理 Kafka 连接失败。
Sourcepub async fn submit(&self, params: SubmitTaskParams) -> Result<String, String>
pub async fn submit(&self, params: SubmitTaskParams) -> Result<String, String>
提交任务
- 生成 task_id
- 委托 storage 持久化任务日志与队列记录
- 发送 Kafka 消息
Sourcepub async fn submit_batch(
&self,
params: SubmitBatchParams,
) -> (usize, Vec<(usize, String)>)
pub async fn submit_batch( &self, params: SubmitBatchParams, ) -> (usize, Vec<(usize, String)>)
批量提交任务
逐个提交,部分失败不影响其他任务。
返回 (成功数, 失败详情列表)。
Sourcepub async fn send_to_dlq(
&self,
msg: &TaskMessage,
dead_letter_topic: &str,
reason: &str,
) -> Result<(), String>
pub async fn send_to_dlq( &self, msg: &TaskMessage, dead_letter_topic: &str, reason: &str, ) -> Result<(), String>
发送消息到死信队列
将失败的 TaskMessage 转发到 dead_letter_topic,同时委托 storage 更新状态为 DeadLetter。
Auto Trait Implementations§
impl Freeze for TaskProducer
impl !RefUnwindSafe for TaskProducer
impl Send for TaskProducer
impl Sync for TaskProducer
impl Unpin for TaskProducer
impl UnsafeUnpin for TaskProducer
impl !UnwindSafe for TaskProducer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more