example/

directory
v0.4.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 8, 2026 License: Apache-2.0

README

Messaging 示例代码

本目录包含完整的 messaging 包使用示例,从入门到进阶,覆盖所有核心功能。

📚 示例目录

🎯 Level 1: 快速入门(5 分钟)
示例 说明 核心知识点
01-quickstart 最简单的发布订阅 • 创建 EventBus
• 发布消息
• 订阅消息
🎓 Level 2: 核心概念(15 分钟)
示例 说明 核心知识点
02-message 消息模型详解 • UUID
• Metadata
• Payload
• Ack/Nack
03-publisher 发布者模式 • Publish vs PublishMessage
• 错误处理
04-subscriber 订阅者模式 • Topic vs Channel
• 事件驱动 vs 任务队列
🚀 Level 3: 实战场景(30 分钟)
示例 说明 核心知识点
05-event-driven 事件驱动架构 • 多服务广播
• 独立 channel
06-task-queue 任务队列模式 • Worker 负载均衡
• 共享 channel
07-router 路由器使用 • 批量注册
• 统一管理
🔧 Level 4: 中间件系统(30 分钟)
示例 说明 核心知识点
08-middleware-basic 基础中间件 • Logger
• Retry
• Timeout
• Recover
09-middleware-advanced 高级中间件 • RateLimit
• CircuitBreaker
• Filter
• Priority
10-middleware-custom 自定义中间件 • 认证
• 加密
• 压缩
🏢 Level 5: 生产就绪(45 分钟)
示例 说明 核心知识点
11-observability 可观测性 • 日志
• 指标
• 链路追踪
12-reliability 高可靠性 • 熔断
• 限流
• 重试
• 超时
13-graceful-shutdown 优雅关闭 • 信号监听
• 资源释放
• 超时控制
🎨 Level 6: 进阶主题(60 分钟)
示例 说明 核心知识点
14-multi-provider 多 Provider • NSQ vs RabbitMQ
• 配置切换
• 性能对比
15-performance 性能优化 • 批量发布
• 并发控制
• 内存优化
16-complete-app 完整应用示例 • 电商订单系统
• 微服务架构
• 最佳实践

🚀 快速开始

前置条件
# 安装 NSQ(推荐使用 Docker)
docker run -d --name nsqlookupd -p 4160:4160 -p 4161:4161 nsqio/nsq /nsqlookupd
docker run -d --name nsqd -p 4150:4150 -p 4151:4151 \
    nsqio/nsq /nsqd --lookupd-tcp-address=host.docker.internal:4160

# 或使用 RabbitMQ
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management
运行示例
# Level 1: 快速入门
cd 01-quickstart && go run main.go

# Level 2: 核心概念
cd 02-message && go run main.go

# Level 3: 实战场景
cd 05-event-driven && go run main.go

# Level 4: 中间件系统
cd 08-middleware-basic && go run main.go

# Level 5: 生产就绪
cd 13-graceful-shutdown && go run main.go

# Level 6: 进阶主题
cd 16-complete-app && go run main.go

📖 学习路径

初学者(0-1 小时)
  1. ✅ 01-quickstart - 了解基本使用
  2. ✅ 02-message - 理解消息模型
  3. ✅ 05-event-driven - 学习事件驱动模式
进阶者(1-3 小时)
  1. ✅ 06-task-queue - 掌握任务队列模式
  2. ✅ 07-router - 使用路由器管理
  3. ✅ 08-middleware-basic - 学习基础中间件
  4. ✅ 09-middleware-advanced - 掌握高级中间件
专家(3+ 小时)
  1. ✅ 11-observability - 建立可观测性
  2. ✅ 12-reliability - 提高系统可靠性
  3. ✅ 13-graceful-shutdown - 实现优雅关闭
  4. ✅ 16-complete-app - 完整应用实战

💡 常见问题

Q1: 为什么有些示例需要启动 NSQ?

A: messaging 包默认使用 NSQ 作为消息中间件。你可以通过修改配置切换到 RabbitMQ。

Q2: 示例代码可以直接用于生产环境吗?

A: 示例代码主要用于学习和演示,生产环境需要:

  • 完善的错误处理
  • 监控和告警
  • 配置管理
  • 日志和审计
Q3: 如何选择合适的中间件?

A: 参考 09-middleware-advanced 和文档的"最佳实践"章节。


🔗 相关资源


🤝 贡献

欢迎提交新的示例!请确保:

  • ✅ 代码简洁易懂
  • ✅ 包含完整注释
  • ✅ 可以独立运行
  • ✅ 演示一个明确的概念

Directories

Path Synopsis
Package main 演示 messaging 包的最简单用法 5 分钟快速入门:发布和订阅消息
Package main 演示 messaging 包的最简单用法 5 分钟快速入门:发布和订阅消息
Package main 演示 Message 消息模型的完整功能 学习 UUID、Metadata、Payload、Ack/Nack
Package main 演示 Message 消息模型的完整功能 学习 UUID、Metadata、Payload、Ack/Nack
Package main 演示 Publisher 的使用 发布消息、批量发布、发布选项
Package main 演示 Publisher 的使用 发布消息、批量发布、发布选项
Package main 演示 Subscriber 的使用 订阅消息、多订阅者、订阅选项
Package main 演示 Subscriber 的使用 订阅消息、多订阅者、订阅选项
Package main 演示事件驱动架构(Event-Driven Architecture) 一个事件,多个服务订阅(广播模式)
Package main 演示事件驱动架构(Event-Driven Architecture) 一个事件,多个服务订阅(广播模式)
Package main 演示任务队列模式(Task Queue Pattern) 多个 Worker 负载均衡处理任务
Package main 演示任务队列模式(Task Queue Pattern) 多个 Worker 负载均衡处理任务
Package main 演示 Router 的使用 统一路由管理、全局中间件、局部中间件
Package main 演示 Router 的使用 统一路由管理、全局中间件、局部中间件
Package main 演示基础中间件的使用 Logger、Retry、Timeout、Recover
Package main 演示基础中间件的使用 Logger、Retry、Timeout、Recover
Package main 演示高级中间件的使用 RateLimit、CircuitBreaker、Filter、Priority、Deduplication
Package main 演示高级中间件的使用 RateLimit、CircuitBreaker、Filter、Priority、Deduplication
Package main 演示如何编写自定义中间件 包括:认证中间件、审计中间件、批处理中间件
Package main 演示如何编写自定义中间件 包括:认证中间件、审计中间件、批处理中间件
Package main 演示可观测性实践 Metrics、Tracing、Health Check
Package main 演示可观测性实践 Metrics、Tracing、Health Check
Package main 演示可靠性保障实践 错误处理、重试策略、熔断降级、消息幂等性
Package main 演示可靠性保障实践 错误处理、重试策略、熔断降级、消息幂等性
Package main 演示优雅关闭 信号处理、资源清理、未完成任务处理
Package main 演示优雅关闭 信号处理、资源清理、未完成任务处理
Package main 演示如何在不同消息中间件之间切换 包括:NSQ、RabbitMQ 的切换和混合使用
Package main 演示如何在不同消息中间件之间切换 包括:NSQ、RabbitMQ 的切换和混合使用
Package main 演示性能优化和压测 并发处理、批量操作、性能监控
Package main 演示性能优化和压测 并发处理、批量操作、性能监控
Package main 完整的生产级应用示例 综合展示:配置管理、中间件、可观测性、错误处理、优雅关闭
Package main 完整的生产级应用示例 综合展示:配置管理、中间件、可观测性、错误处理、优雅关闭

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL