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