使用 Spring 应用程序上下文和 lmax 干扰器配置长 运行 进程

Configure Long run process using Spring Application Context & lmax disruptors

我们有一个项目需要很长的运行流程来检查付款是否已被遵守,如果是则记录必须提升到下一个级别。 由于要处理的记录数量巨大,我们决定使用 lmax disruptor。 有什么选择?我们可以将 lmax 与 Spring 应用程序上下文集成?

  1. 将 bean 添加到 Context xml 并使 lazy-load="false"

  2. private final ExecutorService EXECUTOR = Executors.newFixedThreadPool(1); 私有 Disruptor 破坏者; 私有 RingBuffer ringBuffer;

    @Autowired 私有 PaymentCompletionHandler paymentCompletionHandler; 私有字符串 numberOfThreads; 私有字符串 queueWarnLimit;

    public void processTransaction(PaymentProcessBridge paymentProcessBridge) { 长序列 = ringBuffer.next(); // 获取下一个序列 TransactionEvent transactionEvent = ringBuffer.get(sequence); transactionEvent.setPaymentProcessBridge(paymentProcessBridge); ringBuffer.publish(序列); }

  3. public void init() { 破坏者=新的破坏者( TransactionEvent.EVENT_FACTORY, 1024, 执行人, ProducerType.SINGLE, 新的 SleepingWaitStrategy());

    disruptor.handleEventsWith(paymentCompletionHandler);
    ringBuffer = disruptor.start();
    

    }