0

我在我的 Go 微服务中创建了一个 NSQ 生产者,我正在尝试创建一个方法,让它在 NSQ 重新启​​动后尝试重新连接。

我查看了 nsq 配置文档,希望看看我是否可以在重新启动/退出时提供故障转移方法,但我运气不佳。我将发布我如何创建我的 NSQ 生产者:

type ProducerNSQ struct {
    p *nsq.Producer
}

func initConnectionNSQ() (*ProducerNSQ, error) {
    config := nsq.NewConfig()
    config.UserAgent = common.DeployedService()
    config.BackoffMultiplier = time.Duration(time.Second * 10)

    producer, err := nsq.NewProducer(dataConfig.NsqAddress, config)
    if err != nil {
        return nil, err
    }
    if err := producer.Ping(); err != nil {
        return nil, err
    }
    return &ProducerNSQ{p: producer}, nil
}

非常感谢所有帮助!

4

1 回答 1

0

在 goroutine 中创建生产者,并有一个通道向其发送消息以进行发布。在 goroutine 中有一个无限循环,从通道接收消息并尝试发送到 NSQ,如果失败重新连接并重试。

于 2020-01-16T20:18:58.790 回答