У меня есть компонент, управляемый сообщениями, который обслуживает сообщения следующим образом: 1. Он получает данные из входящего сообщения.2. Вызывает внешнюю службу через HTTP (буквально, отправляет запросы GET с использованием HttpURLConnection), используя данные из шага 1. Независимо от того, сколько времени занимает вызов - сообщение НЕ ДОЛЖНО быть отброшено.3. Использует результат шага 2 для сохранения данных (с использованием объектных компонентов).
Скорость входящих сообщений: I. В большинстве случаев низкая: порядка единиц / десятков в день.II.Иногда высокий: порядка сотен за несколько минут.
ВОПРОС: Использование этого сервиса на шаге (2) является относительно медленным (20 секунд на запрос и ухудшается при увеличении рабочей нагрузки), что является лучшим способом решенияСитуация II?
ЧТО Я ПОПЫТАЛ: 1. Позволить MDB ждать, пока служба не будет выполнена, независимо от того, сколько времени это займет.Это приводит к откату транзакций MDB по таймауту и повторной доставке сообщений, что увеличивает рабочую нагрузку и делает ситуацию еще хуже.2. Установка таймаута для HttpURLConnection дает некоторые гарантии с точки зрения времени завершения метода MDB onMessage (), но оставляет открытым вопрос: как поступить с сообщениями «timed out».
Любые идеи очень приветствуются.Спасибо!