2016-08-03 3 views
0

Нашего проекта имеет следующую структуру потока:границы транзакции без использования пуллеров

<input-flow> | <routing-flow> | <output-flow> 

Где трубы символизируют границы транзакции и все потоки многопоточная с использованием TaskExecutors. В потоке ввода транзакция запускается адаптером, управляемым сообщением-каналом, но в потоке маршрутизации и потоке вывода в настоящее время он запускается с помощью опроса, который вызывает задержку.

Чтобы избежать латентности poller, я хотел бы создать границы транзакций с помощью ExecutorChannels, но ExecutorChannel не запускает транзакцию для потока.

Есть ли другие возможности для достижения этого?

ответ

0

Вы можете избежать латентности, уменьшив интервал опроса (даже до 0) и увеличив тайм-аут приема (за счет привязки потока планировщика к ожиданию сообщений).

для канала исполнителя, можно вставить транзакционный шлюз в потоке (см this answer для примера, или использовать АОП, чтобы начать операцию по прямому каналу send() где-то ниже по потоку от исполнителя.