Зависимости между сообщениями в потоках в Distruptor

У нас есть сценарий в Disruptor, где есть несколько потребителей (скажем, 2) и несколько производителей (скажем, 3), и между ними есть RingBuffer. Производители-RingBuffers-потребители

Потребители читают и пишут в базу данных и работают медленно. Некоторые сообщения зависят друг от друга (например, #10 зависит от #4) и могут создаваться разными производителями. № 10 не должен обрабатываться Потребителем 1 или Потребителем 2 до тех пор, пока № 4 не закончится. Используя RingBuffer, как это можно сделать? Мы явно хотим избежать замков.

  1. Должен ли производитель (P1) дождаться получения соответствующего сообщения, прежде чем поместить это сообщение в RingBuffer? Можно ли этого достичь без использования замков?
  2. Должно ли сообщение быть "пакетным"? Есть ли способ сделать это?
  3. Есть ли лучший подход с использованием Disruptor?

Подходит ли этот вариант использования для шаблона Distruptor? Может ли кто-нибудь помочь мне с примером?

0 ответов

Другие вопросы по тегам