使用 Spring 应用程序上下文和 lmax 干扰器配置长 运行 进程
Configure Long run process using Spring Application Context & lmax disruptors
我们有一个项目需要很长的运行流程来检查付款是否已被遵守,如果是则记录必须提升到下一个级别。
由于要处理的记录数量巨大,我们决定使用 lmax disruptor。
有什么选择?我们可以将 lmax 与 Spring 应用程序上下文集成?
将 bean 添加到 Context xml 并使 lazy-load="false"
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(序列);
}
public void init() {
破坏者=新的破坏者(
TransactionEvent.EVENT_FACTORY,
1024,
执行人,
ProducerType.SINGLE,
新的 SleepingWaitStrategy());
disruptor.handleEventsWith(paymentCompletionHandler);
ringBuffer = disruptor.start();
}
我们有一个项目需要很长的运行流程来检查付款是否已被遵守,如果是则记录必须提升到下一个级别。 由于要处理的记录数量巨大,我们决定使用 lmax disruptor。 有什么选择?我们可以将 lmax 与 Spring 应用程序上下文集成?
将 bean 添加到 Context xml 并使 lazy-load="false"
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(序列); }
public void init() { 破坏者=新的破坏者( TransactionEvent.EVENT_FACTORY, 1024, 执行人, ProducerType.SINGLE, 新的 SleepingWaitStrategy());
disruptor.handleEventsWith(paymentCompletionHandler); ringBuffer = disruptor.start();
}