文章目录WatermillGo 消息流处理库WatermillGo 消息流处理库ThreeDotsLabs 开源的 Go 库 Watermill目前收获了 9,780 个 Star。它用于处理消息流适合构建事件驱动应用。Watermill 支持事件溯源、基于消息的 RPC、saga 等模式。你可以使用 Kafka 或 RabbitMQ 这类传统 pub/sub 方案也可以在场景合适时使用 HTTP 或 PostgreSQL。核心设计Watermill 的设计目标是让消息通信像 HTTP 路由一样直观。它的核心接口非常简洁func(*Message) ([]*Message, error)处理器接收一条消息决定发布新消息或返回错误。后续行为由所选中间件控制这种设计让系统保持灵活。支持的 Pub/Sub支持的 Pub/Sub 包括 Kafka、RabbitMQ、NATS JetStream、Redis Streams、Google Cloud Pub/Sub、AWS SNS/SQS、HTTP、PostgreSQL、MySQL、SQLite 等。每种实现都遵循统一的 Publisher 和 Subscriber 接口type Publisher interface { Publish(topic string, messages ...*Message) error Close() error } type Subscriber interface { Subscribe(ctx context.Context, topic string) (-chan *Message, error) Close() error }稳定性Watermill 已发布 v1.0.0作者称其为生产就绪版本。公共 API 稳定主版本不变则不会破坏兼容性。所有 Pub/Sub 实现都需要通过一套测试才能合入主线测试还会在 stress 模式下并行运行 20 次并启用 race detector。示例与性能官方提供了丰富的示例覆盖基础用法、pub/sub 单独使用、以及真实场景。基础示例包括首个应用、实时 feed、路由器、指标、基于 protobuf 的 CQRS。真实场景示例包括 exactly-once 计数、接收和发送 webhook、数据库同步、持久化事件日志、事务事件、SSE 实时更新等。性能方面官方在单台 16 CPU 虚拟机搭配 Docker Compose 的环境下做过基准测试。GoChannel 的发布速度约为每秒 31.5 万条订阅速度约为每秒 13.8 万条。Kafka 单节点订阅速度约为每秒 10.1 万条发布速度约为每秒 4.1 万条。Redis Streams 发布速度约为每秒 5.9 万条订阅速度约为每秒 1.2 万条。不同后端和配置下结果差异较大数据仅供参考。开始使用可以参考官方的快速入门文档也可以直接查看仓库中的示例代码。大数据仅供参考。开始使用可以参考官方的快速入门文档也可以直接查看仓库中的示例代码。