Попытайтесь восстановить соединение с NSQ после чистого закрытия. - PullRequest
0 голосов
/ 16 января 2020

Я создал производителя 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 Ответ

0 голосов
/ 16 января 2020

создать продюсера в goroutine и иметь канал для отправки ему сообщения для публикации. в goroutine есть бесконечная l oop, получение сообщений с канала и попытка отправки в NSQ, если не удается, переподключите и повторите попытку.

...