NATS Request Ответить - Как это работает?

Я новый NATS. Не уверен, как работает ответ на запрос NATS.

Насколько я понимаю, этот шаблон можно использовать для двунаправленной связи, но возникает вопрос, работает ли он между одним и тем же идентификатором сообщения / потоком? Если нет, не можем ли мы использовать две разные очереди для одной цели? Чем он отличается от pub-sub или шаблона очереди NATS?

Может ли кто-нибудь предоставить больше вариантов использования этого?

Благодарю.

1 ответ

Решение

Вы добавили nats-streaming-server тег, поэтому я хотел бы сначала уточнить, что в потоковой трансляции NATS нет API запроса / ответа, потому что это не имеет смысла.

В NATS вы будете использовать запрос / ответ, когда ваше приложение публикации хочет знать, что приложение подписки получило и обработало сообщение. Это полное подтверждение того, что опубликованное сообщение было получено и обработано.

Это также может быть просто потому, что подписывающее приложение обрабатывает задание и отправляет результат этого задания запрашивающей стороне.

Простой пример будет:

// Request will create an internal subscription on
// a private inbox and set it to the message's Reply
// field.
msg, err := nc.Request("job", payload, time.Second)
if err != nil {
    ...
} else {
    // msg is the reply sent by the subscribing application.
}

С другой стороны, вы бы зарегистрировали подписку для обработки запросов на работу.

nc.Subscribe("job", func(req *nats.Msg) {
    // req is the request received by the publisher above.
    // Send back a reply to the request reply subject.
    nc.Publish(req.Reply, []byte(reply))
})

Не уверен, какой язык вы используете, но вот ссылка на клиент Go

Другие вопросы по тегам