У нас есть проект, который требует длительного процесса, чтобы проверить, произведена ли оплата, и если это необходимо, запись должна быть переведена на следующий уровень. Так как это огромное количество записей, которые нужно обработать, мы решили использовать lmax disruptor. Какие есть варианты? что мы можем интегрировать lmax с Spring Application Context?
Настроить длительный процесс с помощью Spring Application Context и lmax disruptors
Ответы (1)
Добавьте bean-компонент в Context xml и сделайте lazy-load = "false"
закрытый финальный ExecutorService EXECUTOR = Executors.newFixedThreadPool (1); частный Disruptor disruptor; частный RingBuffer ringBuffer;
@Autowired private PaymentCompletionHandler paymentCompletionHandler; private String numberOfThreads; private String queueWarnLimit;
public void processTransaction (PaymentProcessBridge paymentProcessBridge) {длинная последовательность = ringBuffer.next (); // Получение следующей последовательности TransactionEvent transactionEvent = ringBuffer.get (sequence); transactionEvent.setPaymentProcessBridge (paymentProcessBridge); ringBuffer.publish (последовательность); }
public void init () {disruptor = new Disruptor (TransactionEvent.EVENT_FACTORY, 1024, EXECUTOR, ProducerType.SINGLE, new SleepingWaitStrategy ());
disruptor.handleEventsWith(paymentCompletionHandler); ringBuffer = disruptor.start();
}