2016-07-07 2 views
1

Хотел бы проверить, является ли поток барьером правильным способом решения проблемы, когда вам приходится периодически анализировать БД непрерывно 2-3 раза в определенные промежутки времени для входящих событий, проверяющих триггер, а затем, в конечном итоге, тайм-аут в интеграции с весной проект.Нужно ли нам 2 потока для защиты резьбы?

Кроме того, нам всегда нужны 2 нити для защиты резьбы? Подвешенная резьба и триггерная резьба.

ответ

0

BarrierMessageHandler основан на логике, как:

Message<?> releaseMessage = syncQueue.poll(this.timeout, TimeUnit.MILLISECONDS); 

поэтому блокирует текущий поток.

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

+0

Спасибо! Могу ли я использовать поточный барьер для приостановки входящего потока для предопределенного ожидания, когда я вызываю БД для проверки состояния. Если статус из БД является истинным, он должен выпустить релиз else, дождаться таймаута на барьере и повторить попытку. Я могу связать как входящее сообщение, так и результат БД с корреляцией. –

+0

Похоже. Но подумайте о том, чтобы использовать 'RequestHandlerRetryAdvice' именно для активатора вызова БД, а не' барьера'. –

+0

Привет, Артем! Похоже, есть более простой способ сделать это. Мы можем проверить БД и использовать Delayer для задержки или отправки сообщений на основе ответа БД. Мы можем сохранять значения в заголовках и использовать Router для обработки на основе этих флагов. –

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