Откат или тайм-аут для JMSTemplate send()

В настоящее время мы используем метод JmsTemplate send(Destination, messageCreator) для отправки сообщений в очередь webMethods. Однако бывают случаи, когда метод отправки занимает слишком много времени для возврата, что мы не можем себе позволить, поскольку наш тайм-аут должен составлять всего 5 секунд. Мой вопрос в том, как мы можем гарантировать это? Кажется, что у JmsTemplate нет времени ожидания отправки.

Я думаю, что у нас есть вариант подождать 5 секунд ответа от метода send(). Если оно истекло более чем на 5 секунд, мы будем считать это неудачным. Однако нам нужно убедиться, что отправленное сообщение (пытающееся отправить) вообще не будет обработано, поскольку мы будем считать этот запрос неудачным. как нам это сделать? Откат? Спасибо!


person learning_dev_me    schedule 31.03.2014    source источник


Ответы (1)


JmsTemplate — это абстракция более высокого уровня по сравнению с основным JMS API. Этот основной (JMS) API не имеет такого механизма.

Довольно необычно, что отправка JMS занимает так много времени; если у вас действительно огромные сообщения и медленная сеть.

Вы можете обработать отправку в другом потоке и попытаться прервать ее через 5 секунд, но это сработает только в том случае, если код клиентской библиотеки JMS прерываем.

Однако, как правило, невозможно надежно сделать то, что вы хотите, из-за состояния гонки.

person Gary Russell    schedule 31.03.2014