Паттерн request-response в JMS-брокерах — зачем timeout?
Привет всем. Как мы знаем, брокеры сообщений, основанные на JMS, позволяют интегрировать через паттерн "запрос-ответ". При этом на продюсере указывается создается временная обратная очередь, указывается в параметре replyTo, а также correlationId. На ответ консьюмера есть дефолтный таймаут, сколько-то секунд, в разных брокерах разный. Вопрос зачем он нужен, если асинхрон, отвечающий по таймауту - это не что иное, как синхрон.
Есть догадка, что в ответная очередь нужна только для отправки "ок, принял", а реальный payload отправляется в обратной, не-временной очереди. Я прав?
Нет, вы не правы. И вообще непонятно почему вы сделали такой вывод.
Паттерн request-response по определению синхронный, да — отправляющий запрос ждёт ответа. Поэтому в нём и нужен таймаут.
Но можно и сказать, что это не синхронный код, потому что он может быть и неблокирующим и производить какую-то работу.
Т.е. часть, работающая с возвращаемыми данными по своей сути синхронен, но в контексте всего приложения эта операция асинхронна.