Попытайтесь восстановить соединение с NSQ после чистого закрытия.

Я создал производителя 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, если не удается повторно подключиться и повторить попытку.


Есть идеи?

10000