2013-05-24 2 views
1

Существует несколько серверов, которые слушают activemq. Цепочка настроена так, чтобы сделать вызов http [исходящий шлюз]. Предположим, что один из серверов получает сообщение и между ними, если по какой-либо причине HTTP-вызов завершился с ошибкой. Сообщение должно быть возвращено в очередь, чтобы другой сервер мог получить сообщение и обработать его. Это можно достичь с помощью Spring Integration. Я много читал о транзакции, но не смог найти работоспособного способа.Ошибка интеграции с сетью http-исходящих шлюзов

ответ

1

Да, просто установите acknowledge="transacted" на <int-jms:message-driven-channel-adapter/> и, до тех пор, пока вы используете только прямые каналы (не <queue/> на канале или task-executor на диспетчеру канала), то любая неудача вызовет сообщение откатить.

+0

Выполнение задачи выполняется на канале ' ' – user2254842

+0

Сделки весной работают только с одним потоком; как только вы передадите другой поток, текущий поток вернется в контейнер и немедленно передаст его. Вы не можете использовать 'ExecutorChannel' или' QueueChannel' в этом сценарии. Вам нужно использовать только 'DirectChannel'. Если вам требуется параллелизм, это должно обрабатываться с использованием параметров параллелизма в 'message-driven-adapter'; таким образом, каждое сообщение полностью обрабатывается в своем потоке. –

Смежные вопросы