Я думаю, что описал почти все, что мне нужно в заголовке. Итак, есть несколько потоков WMB. И один ждет ответа в очереди. Мне нужно создать исключение, если после тайм-аута в очереди не будет сообщения.
Спасибо за ваше время
Я думаю, что описал почти все, что мне нужно в заголовке. Итак, есть несколько потоков WMB. И один ждет ответа в очереди. Мне нужно создать исключение, если после тайм-аута в очереди не будет сообщения.
Спасибо за ваше время
Да, это возможно, но вам нужно будет разработать его в своих потоках. MQ создан для асинхронной связи, поэтому тайм-аут не является чем-то родным для него. Теперь я могу придумать 2 возможных решения:
В потоке, который отправляет запрос, после отправки запроса вы добавляете узел TimeoutControl и устанавливаете желаемый тайм-аут. Создайте новый поток, который начинается с потока TimeoutNotification. В этом потоке вы отправляете ошибку тайм-аута, если ответ еще не получен. И чтобы узнать, какой ответ был получен, вы можете использовать разные методы, например, потоки, отправляющие запрос и получающие ответ, могут поддерживать таблицу базы данных, или вы также можете хранить эту информацию в очереди.
Настройте поток обработчика ответов, чтобы он начинался с входа MQ, за которым следовал узел получения MQ. Вы прослушиваете ответ с помощью MQ Get, для которого вы можете установить интервал ожидания, который будет вашим порогом тайм-аута. Вход MQ получает технические сообщения, отправленные потоком отправителя запроса после отправки запроса. Это худшее решение, чем первое, так как вы заблокируете поток сообщений во время прослушивания ответа.
Или вы можете просто создать 1 поток для отправки запроса и получения ответа, получая ответ с помощью узла MQ Get. Это еще хуже, так как вам нужно будет отключить транзакцию для вывода MQ, отправляющего запрос.