Я создал производителя NSQ в своем микросервисе Go и пытаюсь создать метод для него, чтобы он пытался восстановить соединение после перезапуска 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
}
Вся помощь очень ценится!
Всего 1 ответ
создать продюсера в программе и иметь канал для отправки ему сообщения для публикации. в goroutine есть бесконечный цикл, получение сообщений из канала и попытка отправки в NSQ, если не удается повторно подключиться и повторить попытку.