goframe开发一个企业网站 rocketmq 队例14

RocketMQ在GoFrame框架中的实现方案

项目概述

在GoFrame框架中实现RocketMQ消息队列的完整解决方案。采用分层架构设计,包含配置管理、基础封装、业务逻辑和接口控制四个层次。

技术特点

配置管理

  • 支持YAML配置文件管理连接信息
  • 可动态切换消息队列类型(RocketMQ/RabbitMQ)
  • 包含nameServer、group等核心配置项

基础封装(pkg层)

  • 使用sync.Once确保单例初始化
  • 封装生产者消费者实例管理
  • 提供优雅关闭机制
  • 统一的错误处理

业务逻辑(logic层)

  • 实现消息发送与消费的核心逻辑
  • 支持消息状态跟踪和持久化
  • 提供消息重试机制
  • 完整的日志记录

接口控制(controller层)

  • 提供HTTP接口操作消息
  • 统一的响应格式
  • 完善的参数校验
  • 友好的错误提示

应用场景

  • 异步任务处理
  • 系统间解耦
  • 消息通知
  • 延迟任务
  • 流量削峰

扩展性

  • 支持自定义消息处理逻辑
  • 可扩展消息过滤规则
  • 支持多种消息队列切换
  • 便于二次开发

注意事项

  • 需提前初始化连接
  • 注意消息幂等性处理
  • 建议添加监控告警
  • 关注消息积压情况

代码实现

配置文件

# 消息队列配置
mq:
  # 消息队列类型: rocketmq 或 rabbitmq
  type: "rabbitmq"
  # 是否启用消息队列
  enabled: true

rocketmq:
  nameServer: "127.0.0.1:9876"
  producerGroup: "myProducerGroup"
  consumerGroup: "myConsumerGroup"
  brokerAddress: "127.0.0.1:10911"  # 添加 broker 地址

rabbitmq:
  url: "amqp://wanghaibin:[email protected]:5672/"
  exchange: "gf_exchange"
  dlx_exchange: "gf_dlx_exchange"    # 新增:死信交换机
  queue: "gf_queue"
  delay_queue: "gf_delay_queue"      # 新增:延迟队列
  routingKey: "gf_key"
  vhost: "/"

基础包实现

package rocketmq

import (
    "context"
    "sync"

    "github.com/apache/rocketmq-client-go/v2"
    "github.com/apache/rocketmq-client-go/v2/consumer"
    "github.com/apache/rocketmq-client-go/v2/producer"
    "github.com/gogf/gf/v2/frame/g"
)

// 全局变量定义
var (
    once sync.Once
    mqProducer rocketmq.Producer
    mqConsumer rocketmq.PushConsumer
)

func Initialize() error {
   
   
    once.Do(func() {
   
   
        var err error
        ctx := context.Background()
        nameServer := g.Cfg().MustGet(ctx, "rocketmq.nameServer").String()
        groupName := g.Cfg().MustGet(ctx, "rocketmq.groupName").String()

        mqProducer, err = rocketmq.NewProducer(
            producer.WithNameServer([]string{
   
   nameServer}),
            producer.WithGroupName(groupName),
            producer.WithRetry(2),
        )
        if err != nil {
   
   
            g.Log().Fatalf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老大白菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值