You need to enable JavaScript to run this app.
文档中心
消息队列 RocketMQ版

消息队列 RocketMQ版

复制全文
下载 pdf
Go SDK
参数说明
复制全文
下载 pdf
参数说明
本文介绍您在使用 Go SDK 接入火山引擎消息队列 RocketMQ版时,需要配置的参数。
消息发送参数
配置示例:
// 通用的使用方式
p, _ := rocketmq.NewProducer(
producer.WithNsResolver(primitive.NewPassthroughResolver([]string{"127.0.0.1:9876"})),
producer.WithRetry(2),
// 在这里添加新的配置参数
)
参数说明:
参数
是否必选
说明
配置方式
WithGroupName
可选
Producer 组名,即您在火山引擎 RocketMQ 控制台上创建的 Group ID。
使用事务消息时需要指定 Producer 的 Group ID,并保证使用相同 Group ID 的客户端处理逻辑是相同的,RocketMQ 服务端会在回查事务消息提交状态的时候发送到相同 Group ID 中的任何一个客户端。
说明
对于 2022年12月16日之前创建的实例,此处配置的格式为 RocketMQ实例ID%Group名称,例如实例 ID为MQ_INST_1111313Group 名称为 Demo,则拼接后为 MQ_INST_1111313%Demo
producer.WithGroupName("demo-group")
WithInstanceName
在单个进程启动多个客户端时必选
客户端标识(Client ID)。一个进程中需要创建多个 RocketMQ 客户端连接不同实例时,需要通过 InstanceName 区分客户端连接。
producer.WithInstanceName("instance")
WithSendMsgTimeout
可选
发送消息的超时时间。
producer.WithSendMsgTimeout(3 * time.Second)
Retry
可选
重试次数。
producer.Retry(3)
WithInterceptor
可选
拦截器。
primitive.Interceptor
WithQueueSelector
顺序消息时需要填写
消息投递选择队列的逻辑。RocketMQ 提供内置的队列选择器,您可以根据业务需要任选一种。
内置的队列选择器包括以下几种。
  • producer.NewRandomQueueSelector 随机选择队列。
  • producer.NewRoundRobinQueueSelector 按照轮训方式选择队列。
  • producer.NewManualQueueSelector 直接选择消息中配置的队列。
queueSelector := producer.NewRandomQueueSelector()
p, _ := rocketmq.NewProducer(
...
producer.WithQueueSelector(queueSelector),
)
// 也可以实现 producer.QueueSelector 接口,指定自己的队列选择器
//type QueueSelector interface {
// Select(*primitive.Message, []*primitive.MessageQueue) *primitive.MessageQueue
//}
WithCredentials
必选
密钥信息,包括 AccessKey 和 SecretKey。
producer.WithCredentials(primitive.Credentials{
AccessKey: "",
SecretKey: "",
}),
WithNsResolver
必选
指定用于解析 NameServer 地址的路由,NameServer 地址和域名任选其一。
p, _ := rocketmq.NewProducer(
producer.WithNsResolver(primitive.NewPassthroughResolver([]string{"127.0.0.1:9876"})),
....
)
消息消费参数
参数
是否必选
说明
配置方式
WithConsumerModel
可选
消费模式。默认为 Clustering,即集群模式。
  • BroadCasting:广播模式
  • Clustering:集群模式
c, err := rocketmq.NewPushConsumer(
consumer.WithConsumerModel(consumer.Clustering),
....
)
WithConsumeFromWhere
可选
新的 Consumer Group 启动后,用于确定从何处开始拉取。取值包括:
  • ConsumeFromLastOffset:从上次消费位置继续消费。新建的 Consumer Group 选择此参数将从起始位置开始消费。
  • ConsumeFromFirstOffset:从起始位置开始消费。选择此参数时,可能发生重复消费,请根据实际业务情况选择。
  • ConsumeFromTimestamp:从指定时间戳开始消费。小于指定时间戳的消息将不会被消费。
// 1. ConsumeFromLastOffset 从最新位置开始消费.
c, err := rocketmq.NewPushConsumer(
consumer.WithConsumeFromWhere(consumer.ConsumeFromLastOffset),
....
)
// 2. ConsumeFromFirstOffset 从起始位置开始消费.
c, err := rocketmq.NewPushConsumer(
consumer.WithConsumeFromWhere(consumer.ConsumeFromFirstOffset),
....
)
// 3. ConsumeFromTimestamp 从指定时间戳开始消费.
c, err := rocketmq.NewPushConsumer(
consumer.WithConsumeFromWhere(consumer.ConsumeFromTimestamp),
consumer.WithConsumeTimestamp("20131223171201")
....
)
WithConsumerOrder
顺序消费时必选
配置是否为顺序消费模式,默认为 false,即不顺序消费。
c, _ := rocketmq.NewPushConsumer(
....
consumer.WithConsumerOrder(true),
)
WithConsume
MessageBatchMaxSize
可选
每次消费一批消息的时候包含多少条消息,默认为 1。
c, _ := rocketmq.NewPushConsumer(
....
consumer.WithConsumeMessageBatchMaxSize(1),
)
WithInterceptor
可选
拦截器,用于拦截消费者。
primitive.Interceptor
WithGroupName
必选
Consumer 的组名。即您在控制台上创建的 Group ID。
说明
对于 2022年12月16日之前创建的实例,此处配置的格式为 RocketMQ实例ID%Group名称,例如实例 ID 为 MQ_INST_1111313Group 名称为 Demo,则拼接后为 MQ_INST_1111313%Demo
c, _ := rocketmq.NewPushConsumer(
....
consumer.WithGroupName("demo-group"),
)
WithInstance
在单个进程启动多个客户端时必选
客户端标识(Client ID)。一个进程中需要创建多个 RocketMQ 客户端连接不同实例时,需要通过 InstanceName 区分客户端连接。
c, _ := rocketmq.NewPushConsumer(
....
consumer.WithInstance("aaaaa"),
)
WithCredentials
必选
RocketMQ 实例的密钥,即您在火山引擎控制台中、RocketMQ 实例的密钥管理页面创建的密钥,用于身份认证。
注意:此处的密钥并非火山引擎主账号 AccessKey。
c, err := rocketmq.NewPushConsumer(
consumer.WithGroupName("demo-group"),
consumer.WithNsResolver(primitive.NewPassthroughResolver([]string{"127.0.0.1:9876"})),
consumer.WithCredentials(primitive.Credentials{
AccessKey: "RocketMQ",
SecretKey: "12345678",
}),
)
WithMaxReconsumeTimes
可选
消费最大重试次数,默认为 -1,即重试 16 次。
c, err := rocketmq.NewPushConsumer(
consumer.WithMaxReconsumeTimes(10),
)
WithStrategy
可选
集群模式下队列分配逻辑。详细信息请参见 consumer 包里面的 strategy.go 文件。
c, err := rocketmq.NewPushConsumer(
consumer.WithStrategy(consumer.AllocateByAveragely),
)
最近更新时间:2025.07.09 16:22:41
这个页面对您有帮助吗?
有用
有用
无用
无用