Producer struct {
//最大消息字节数
MaxMessageBytes int
//消费确认方式
//sarama.WaitForAll(-1)代表leader和follower都接收成功的确认
//sarama.WaitForLocal(1)代表当leader接收成功时确认
//sarama.NoResponse(0)代表不进行消息是否成功接收的确认
RequiredAcks RequiredAcks
//持续时间
Timeout time.Duration
//对消息使用的压缩类型(默认为不压缩)
//类似于' compression '。JVM生成器的编解码器设置。
Compression CompressionCodec
//消息的压缩级别。意思取决于
//使用的实际压缩类型,默认为默认压缩
//编解码器的级别。
CompressionLevel int
//生成分区器,用于选择要发送消息的分区
//(默认为对消息键进行散列)类似于' partitioner.class '
//设置JVM生产者。
Partitioner PartitionerConstructor
//是否开启幂等性
Idempotent bool
// 指定事务
Transaction struct {
// 在事务中使用,通过重启来识别一个生产者实例
ID string
//事务保持未解决状态的时间(既不提交也不中止)
//默认为1分钟
Timeout time.Duration
Retry struct {
//重试发送消息的总次数(默认为50次)。
//类似于`message.send.max。重试JVM生成器的设置。
Max int
//重试之间等待集群解决的时间
//(默认为10ms)类似于“retry.backoff”。女士的设置
// JVM生成器。
Backoff time.Duration
//动态计算退出时间。对实现有用
//更复杂的撤退策略。这个优先于
//设置时' Backoff '。
BackoffFunc func(retries, maxRetries int) time.Duration
}
}
//返回将被填充的通道。如果它们被设为true,
//必须从相应的通道中读取,以防止死锁。如果,
//但是,这个配置是用来创建SyncProducer的,两者都必须设置
//设置为true,你不会从通道中读取数据,因为生产者读取了
//同步生产者方式的话这两个值都得设置
Return struct {
//如果启用,成功传递的消息将返回
//成功通道(默认禁用 false)。
Successes bool
//如果启用,发送失败的消息将返回
//错误通道,包括错误(默认启用)。
Errors bool
}
//消息重试结构体
Retry struct {
//重试发送消息的总次数(默认为3次)。
//类似于`message.send.max。重试JVM生成器的设置。
Max int
//重试等待的时间
Backoff time.Duration
//动态计算退出时间。对实现有用
//更复杂的撤退策略。这个优先于
//设置时' Backoff '。
BackoffFunc func(retries, maxRetries int) time.Duration
}
//当生产者调度程序读取
//第一次发送消息。拦截器允许拦截和
//在消息被发布到Kafka之前可能会改变消息
//集群。*ProducerMessage被第一个拦截器修改
// OnSend()被传递给第二个拦截器OnSend(),以此类推
//拦截器链。
Interceptors []ProducerInterceptor
}