用途:在实现 GenStage 或 Broadway 消费者前使用,指导构建数据管道并消费消息队列。
主要能力与规则:错误用 Broadway.Message.failed/2 返回而非在 handle_message/3 中 raise;必须实现 handle_failed/2,为每条管道显式做死信处理;在 start_link 配置 :max_restarts、:max_seconds;用 Broadway.Test.push_message/2 测试各消息类型含失败;将所有生产者负载视为不可信,在 handle_message/3 中按严格 schema 校验 message.data,拒绝畸形、超大或意外负载,不记录原始负载内容。
使用方式:按顺序执行——在 mix.exs 添加依赖(broadway 及生产者库,如 broadway_sqs/broadway_kafka/broadway_rabbitmq,可选 broadway_dashboard);定义管道模块实现 handle_message/3 与 handle_batch/4;加入 application.ex 监督树;验证生产者连接;用 Broadway.Test 单条消息测试;再按 CPU 核数与吞吐目标调处理器与批处理器并发;验证错误处理;通过 telemetry 与可选 broadway_dashboard 开启可观测性。
适用场景:SQS、Kafka、RabbitMQ 等消息消费,批处理写入(如 Repo.insert_all),重试与死信,浓度调优,telemetry 指标。
限制:资料未提供价格与平台信息;重试库(如 Retry)与部分生产者细节需参考各库 README。