com.lmax.disruptor.dsl.ProducerType Java Examples
The following examples show how to use
com.lmax.disruptor.dsl.ProducerType.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: DisruptorLogAppenderBase.java From High-concurrent-server with Apache License 2.0 | 7 votes |
@SuppressWarnings("unchecked") @Override public void start() { if (appenderCount == 0) { addError("No attached appenders found."); return; } if (queueSize < 1) { addError("Invalid queue size [" + queueSize + "]"); return; } addInfo("环形缓冲区的大小: " + queueSize); Executor executor = Executors.newCachedThreadPool(); Disruptor<LogValueEvent> disruptor = new Disruptor<LogValueEvent>( LogValueEvent.EVENT_FACTORY, queueSize, executor, ProducerType.MULTI, new SleepingWaitStrategy()); disruptor.handleEventsWith(new LogDisruptorEventHandle()); disruptor.start(); ringBuffer = disruptor.getRingBuffer(); super.start(); }
Example #2
Source File: DisruptorUtil.java From nuls with MIT License | 6 votes |
public Disruptor<DisruptorData> createDisruptor(String name, int ringBufferSize, ThreadFactory factory) { if (DISRUPTOR_MAP.keySet().contains(name)) { throw new RuntimeException("create disruptor faild,the name is repetitive!"); } Disruptor<DisruptorData> disruptor = new Disruptor<DisruptorData>(EVENT_FACTORY, ringBufferSize, factory, ProducerType.MULTI, new BlockingWaitStrategy()); disruptor.setDefaultExceptionHandler(new NulsExceptionHandler()); //SleepingWaitStrategy // disruptor.handleEventsWith(new EventHandler<DisruptorData>() { // @Override // public void onEvent(DisruptorData DisruptorData, long l, boolean b) throws Exception { // Log.debug(DisruptorData.getData() + ""); // } // }); DISRUPTOR_MAP.put(name, disruptor); return disruptor; }
Example #3
Source File: DisruptorEventQueue.java From opentelemetry-java with Apache License 2.0 | 6 votes |
DisruptorEventQueue( int bufferSize, WaitStrategy waitStrategy, SpanProcessor spanProcessor, boolean blocking) { // Create new Disruptor for processing. Note that Disruptor creates a single thread per // consumer (see https://github.com/LMAX-Exchange/disruptor/issues/121 for details); // this ensures that the event handler can take unsynchronized actions whenever possible. Disruptor<DisruptorEvent> disruptor = new Disruptor<>( EVENT_FACTORY, bufferSize, new DaemonThreadFactory(WORKER_THREAD_NAME), ProducerType.MULTI, waitStrategy); disruptor.handleEventsWith(new DisruptorEventHandler(spanProcessor)); this.ringBuffer = disruptor.start(); this.blocking = blocking; }
Example #4
Source File: Environment.java From camunda-bpm-reactor with Apache License 2.0 | 6 votes |
private void initDispatcherFactoryFromConfiguration(String name) { if (dispatcherFactories.get(name) != null) { return; } for (DispatcherConfiguration dispatcherConfiguration : configuration.getDispatcherConfigurations()) { if (!dispatcherConfiguration.getName() .equalsIgnoreCase(name)) { continue; } if (DispatcherType.DISPATCHER_GROUP == dispatcherConfiguration.getType()) { addCachedDispatchers(dispatcherConfiguration.getName(), createDispatcherFactory(dispatcherConfiguration.getName(), dispatcherConfiguration.getSize() == 0 ? PROCESSORS : dispatcherConfiguration.getSize(), dispatcherConfiguration.getBacklog(), null, ProducerType.MULTI, new AgileWaitingStrategy())); } } }
Example #5
Source File: FastEventServiceImpl.java From redtorch with MIT License | 6 votes |
@Override public void afterPropertiesSet() throws Exception { if ("BusySpinWaitStrategy".equals(waitStrategy)) { disruptor = new Disruptor<FastEvent>(new FastEventFactory(), 65536, DaemonThreadFactory.INSTANCE, ProducerType.MULTI, new BusySpinWaitStrategy()); } else if ("SleepingWaitStrategy".equals(waitStrategy)) { disruptor = new Disruptor<FastEvent>(new FastEventFactory(), 65536, DaemonThreadFactory.INSTANCE, ProducerType.MULTI, new SleepingWaitStrategy()); } else if ("BlockingWaitStrategy".equals(waitStrategy)) { disruptor = new Disruptor<FastEvent>(new FastEventFactory(), 65536, DaemonThreadFactory.INSTANCE, ProducerType.MULTI, new BlockingWaitStrategy()); } else { disruptor = new Disruptor<FastEvent>(new FastEventFactory(), 65536, DaemonThreadFactory.INSTANCE, ProducerType.MULTI, new YieldingWaitStrategy()); } ringBuffer = disruptor.start(); }
Example #6
Source File: TxTransactionEventPublisher.java From Raincat with GNU Lesser General Public License v3.0 | 6 votes |
/** * disruptor start. * * @param bufferSize this is disruptor buffer size. * @param threads this is disruptor consumer thread size. */ private void start(final int bufferSize, final int threads) { disruptor = new Disruptor<>(new TxTransactionEventFactory(), bufferSize, r -> { return new Thread(null, r, "disruptor-thread-" + INDEX.getAndIncrement()); }, ProducerType.MULTI, new BlockingWaitStrategy()); final Executor executor = new ThreadPoolExecutor(threads, threads, 0, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(), TxTransactionThreadFactory.create("raincat-log-disruptor", false), new ThreadPoolExecutor.AbortPolicy()); TxTransactionEventHandler[] consumers = new TxTransactionEventHandler[threads]; for (int i = 0; i < threads; i++) { consumers[i] = new TxTransactionEventHandler(executor, txCompensationService); } disruptor.handleEventsWithWorkerPool(consumers); disruptor.setDefaultExceptionHandler(new IgnoreExceptionHandler()); disruptor.start(); }
Example #7
Source File: DisruptorProviderManage.java From hmily with Apache License 2.0 | 6 votes |
/** * start disruptor. */ @SuppressWarnings("unchecked") public void startup() { Disruptor<DataEvent<T>> disruptor = new Disruptor<>(new DisruptorEventFactory<>(), size, HmilyThreadFactory.create("disruptor_consumer_" + consumerFactory.fixName(), false), ProducerType.MULTI, new BlockingWaitStrategy()); DisruptorConsumer<T>[] consumers = new DisruptorConsumer[consumerSize]; for (int i = 0; i < consumerSize; i++) { consumers[i] = new DisruptorConsumer<>(consumerFactory); } disruptor.handleEventsWithWorkerPool(consumers); disruptor.setDefaultExceptionHandler(new IgnoreExceptionHandler()); disruptor.start(); RingBuffer<DataEvent<T>> ringBuffer = disruptor.getRingBuffer(); provider = new DisruptorProvider<>(ringBuffer); }
Example #8
Source File: MythTransactionEventPublisher.java From myth with Apache License 2.0 | 6 votes |
/** * start disruptor. * * @param bufferSize bufferSize */ private void start(final int bufferSize, final int threadSize) { disruptor = new Disruptor<>(new MythTransactionEventFactory(), bufferSize, runnable -> { return new Thread(new ThreadGroup("hmily-disruptor"), runnable, "disruptor-thread-" + INDEX.getAndIncrement()); }, ProducerType.MULTI, new BlockingWaitStrategy()); final Executor executor = new ThreadPoolExecutor(MAX_THREAD, MAX_THREAD, 0, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(), MythTransactionThreadFactory.create("myth-log-disruptor", false), new ThreadPoolExecutor.AbortPolicy()); MythTransactionEventHandler[] consumers = new MythTransactionEventHandler[MAX_THREAD]; for (int i = 0; i < threadSize; i++) { consumers[i] = new MythTransactionEventHandler(coordinatorService, executor); } disruptor.handleEventsWithWorkerPool(consumers); disruptor.setDefaultExceptionHandler(new IgnoreExceptionHandler()); disruptor.start(); }
Example #9
Source File: DbMessageStore.java From ballerina-message-broker with Apache License 2.0 | 6 votes |
@SuppressWarnings("unchecked") DbMessageStore(MessageDao messageDao, int bufferSize, int maxDbBatchSize) { ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() .setNameFormat("DisruptorMessageStoreThread-%d").build(); disruptor = new Disruptor<>(DbOperation.getFactory(), bufferSize, namedThreadFactory, ProducerType.MULTI, new SleepingBlockingWaitStrategy()); disruptor.setDefaultExceptionHandler(new DbStoreExceptionHandler()); disruptor.handleEventsWith(new DbEventMatcher(bufferSize)) .then(new DbAccessHandler(messageDao, maxDbBatchSize)) .then(new FinalEventHandler()); disruptor.start(); this.messageDao = messageDao; }
Example #10
Source File: RingBufferProcessor.java From camunda-bpm-reactor with Apache License 2.0 | 6 votes |
private RingBufferProcessor(String name, ExecutorService executor, int bufferSize, WaitStrategy waitStrategy, boolean shared, boolean autoCancel) { super(name, executor, autoCancel); this.ringBuffer = RingBuffer.create( shared ? ProducerType.MULTI : ProducerType.SINGLE, new EventFactory<MutableSignal<E>>() { @Override public MutableSignal<E> newInstance() { return new MutableSignal<E>(); } }, bufferSize, waitStrategy ); this.recentSequence = new Sequence(Sequencer.INITIAL_CURSOR_VALUE); this.barrier = ringBuffer.newBarrier(); //ringBuffer.addGatingSequences(recentSequence); }
Example #11
Source File: RingBufferWorkProcessor.java From camunda-bpm-reactor with Apache License 2.0 | 6 votes |
private RingBufferWorkProcessor(String name, ExecutorService executor, int bufferSize, WaitStrategy waitStrategy, boolean share, boolean autoCancel) { super(name, executor, autoCancel); this.ringBuffer = RingBuffer.create( share ? ProducerType.MULTI : ProducerType.SINGLE, new EventFactory<MutableSignal<E>>() { @Override public MutableSignal<E> newInstance() { return new MutableSignal<E>(); } }, bufferSize, waitStrategy ); ringBuffer.addGatingSequences(workSequence); }
Example #12
Source File: DisruptorLogAppenderBase.java From NettyFileTransfer with Apache License 2.0 | 6 votes |
@SuppressWarnings("unchecked") @Override public void start() { if (appenderCount == 0) { addError("No attached appenders found."); return; } if (queueSize < 1) { addError("Invalid queue size [" + queueSize + "]"); return; } addInfo("环形缓冲区的大小: " + queueSize); Executor executor = Executors.newCachedThreadPool(); Disruptor<LogValueEvent> disruptor = new Disruptor<LogValueEvent>( LogValueEvent.EVENT_FACTORY, queueSize, executor, ProducerType.MULTI, new SleepingWaitStrategy()); disruptor.handleEventsWith(new LogDisruptorEventHandle()); disruptor.start(); ringBuffer = disruptor.getRingBuffer(); super.start(); }
Example #13
Source File: AsyncReadResolver.java From spliceengine with GNU Affero General Public License v3.0 | 6 votes |
public AsyncReadResolver(int maxThreads,int bufferSize, TxnSupplier txnSupplier, RollForwardStatus status, TrafficControl trafficControl, KeyedReadResolver synchronousResolver){ this.txnSupplier=txnSupplier; this.trafficControl=trafficControl; this.status=status; this.synchronousResolver = synchronousResolver; consumerThreads=new ThreadPoolExecutor(maxThreads,maxThreads, 60,TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(), new ThreadFactoryBuilder().setNameFormat("readResolver-%d").setDaemon(true).build()); int bSize=1; while(bSize<bufferSize) bSize<<=1; disruptor=new Disruptor<>(new ResolveEventFactory(),bSize,consumerThreads, ProducerType.MULTI, new BlockingWaitStrategy()); //we want low latency here, but it might cost too much in CPU disruptor.handleEventsWith(new ResolveEventHandler()); ringBuffer=disruptor.getRingBuffer(); }
Example #14
Source File: TransactionResolver.java From spliceengine with GNU Affero General Public License v3.0 | 6 votes |
public TransactionResolver(TxnSupplier txnSupplier, int numThreads, int bufferSize) { this.txnSupplier = txnSupplier; this.consumerThreads = MoreExecutors.namedThreadPool(numThreads, numThreads, "txn-resolve-%d", 60, true); this.consumerThreads.allowCoreThreadTimeOut(true); int bSize=1; while(bSize<bufferSize) bSize<<=1; disruptor = new Disruptor<>(new EventFactory<TxnResolveEvent>() { @Override public TxnResolveEvent newInstance() { return new TxnResolveEvent(); } },bSize,consumerThreads, ProducerType.MULTI, new BlockingWaitStrategy()); disruptor.handleEventsWith(new ResolveEventHandler()); ringBuffer = disruptor.getRingBuffer(); disruptor.start(); }
Example #15
Source File: DisruptorTest.java From jstorm with Apache License 2.0 | 6 votes |
@Test public void testSingleProducer() throws InterruptedException { System.out.println("!!!!!!!!!!!!!!Begin testSingleProducer!!!!!!!!!!!!!!"); final AtomicBoolean messageConsumed = new AtomicBoolean(false); // Set queue length to 1, so that the RingBuffer can be easily full // to trigger consumer blocking DisruptorQueue queue = createQueue("consumerHang", ProducerType.SINGLE, 1); push(queue, 1); Runnable producer = new Producer(queue); Runnable consumer = new Consumer(queue, new EventHandler<Object>() { long count = 0; @Override public void onEvent(Object obj, long sequence, boolean endOfBatch) throws Exception { messageConsumed.set(true); System.out.println("Consume " + count++); } }); run(producer, 0, 0, consumer, 50); Assert.assertTrue("disruptor message is never consumed due to consumer thread hangs", messageConsumed.get()); System.out.println("!!!!!!!!!!!!!!End testSingleProducer!!!!!!!!!!!!!!"); }
Example #16
Source File: DisruptorIntegrationTest.java From tutorials with MIT License | 5 votes |
@Test public void whenMultipleProducerMultipleConsumer_thenOutputInFifoOrder() { final EventConsumer eventConsumer = new MultiEventPrintConsumer(); final EventProducer eventProducer = new DelayedMultiEventProducer(); createDisruptor(ProducerType.MULTI, eventConsumer); final RingBuffer<ValueEvent> ringBuffer = disruptor.start(); startProducing(ringBuffer, 32, eventProducer); disruptor.halt(); disruptor.shutdown(); }
Example #17
Source File: DisruptorIntegrationTest.java From tutorials with MIT License | 5 votes |
@Test public void whenSingleProducerMultipleConsumer_thenOutputInFifoOrder() { final EventConsumer eventConsumer = new MultiEventConsumer(); final EventProducer eventProducer = new SingleEventProducer(); createDisruptor(ProducerType.SINGLE, eventConsumer); final RingBuffer<ValueEvent> ringBuffer = disruptor.start(); startProducing(ringBuffer, 32, eventProducer); disruptor.halt(); disruptor.shutdown(); }
Example #18
Source File: ReadOnlyServiceImpl.java From sofa-jraft with Apache License 2.0 | 5 votes |
@Override public boolean init(final ReadOnlyServiceOptions opts) { this.node = opts.getNode(); this.nodeMetrics = this.node.getNodeMetrics(); this.fsmCaller = opts.getFsmCaller(); this.raftOptions = opts.getRaftOptions(); this.scheduledExecutorService = Executors .newSingleThreadScheduledExecutor(new NamedThreadFactory("ReadOnlyService-PendingNotify-Scanner", true)); this.readIndexDisruptor = DisruptorBuilder.<ReadIndexEvent> newInstance() // .setEventFactory(new ReadIndexEventFactory()) // .setRingBufferSize(this.raftOptions.getDisruptorBufferSize()) // .setThreadFactory(new NamedThreadFactory("JRaft-ReadOnlyService-Disruptor-", true)) // .setWaitStrategy(new BlockingWaitStrategy()) // .setProducerType(ProducerType.MULTI) // .build(); this.readIndexDisruptor.handleEventsWith(new ReadIndexEventHandler()); this.readIndexDisruptor .setDefaultExceptionHandler(new LogExceptionHandler<Object>(getClass().getSimpleName())); this.readIndexQueue = this.readIndexDisruptor.start(); if (this.nodeMetrics.getMetricRegistry() != null) { this.nodeMetrics.getMetricRegistry() // .register("jraft-read-only-service-disruptor", new DisruptorMetricSet(this.readIndexQueue)); } // listen on lastAppliedLogIndex change events. this.fsmCaller.addLastAppliedLogIndexListener(this); // start scanner this.scheduledExecutorService.scheduleAtFixedRate(() -> onApplied(this.fsmCaller.getLastAppliedIndex()), this.raftOptions.getMaxElectionDelayMs(), this.raftOptions.getMaxElectionDelayMs(), TimeUnit.MILLISECONDS); return true; }
Example #19
Source File: BenchmarkHandler.java From Okra with Apache License 2.0 | 5 votes |
@Override protected Disruptor<ConcurrentEvent> initialValue() { Disruptor<ConcurrentEvent> disruptor = new Disruptor<>( ConcurrentEventFactory.DEFAULT, DEFAULT_RING_BUFFER_SIZE, CACHED_THREAD_POOL, ProducerType.SINGLE, new LiteBlockingWaitStrategy()); disruptor.handleEventsWith(new ConcurrentHandler()); // disruptor.handleExceptionsWith(); disruptor.start(); return disruptor; }
Example #20
Source File: DisruptorAdapterBy41xHandler.java From Okra with Apache License 2.0 | 5 votes |
@Override protected Disruptor<ConcurrentEvent> initialValue() { Disruptor<ConcurrentEvent> disruptor = new Disruptor<>( ConcurrentEventFactory.DEFAULT, DEFAULT_RING_BUFFER_SIZE, CACHED_THREAD_POOL, ProducerType.SINGLE, new LiteBlockingWaitStrategy()); disruptor.handleEventsWith(new ConcurrentHandler()); // disruptor.handleExceptionsWith(); disruptor.start(); return disruptor; }
Example #21
Source File: DisruptorAdapterHandler.java From Okra with Apache License 2.0 | 5 votes |
@Override protected Disruptor<ConcurrentEvent> initialValue() { Disruptor<ConcurrentEvent> disruptor = new Disruptor<>( ConcurrentEventFactory.DEFAULT, DEFAULT_RING_BUFFER_SIZE, CACHED_THREAD_POOL, ProducerType.SINGLE, new BlockingWaitStrategy()); disruptor.handleEventsWith(new ConcurrentHandler()); // disruptor.handleExceptionsWith(); disruptor.start(); return disruptor; }
Example #22
Source File: LogicProcessor.java From Okra with Apache License 2.0 | 5 votes |
public LogicProcessor(EventFactory<ConcurrentEvent> factory, EventHandler<ConcurrentEvent> handler, int rbSize, ExecutorService es, ProducerType pt, WaitStrategy ws) { this.disruptor = new Disruptor<>(factory, rbSize, es, pt, ws); this.disruptor.handleEventsWith(handler); // disruptor.handleExceptionsWith(); this.disruptor.start(); this.msgQueue = newQueue(); }
Example #23
Source File: DisruptorConfigure.java From youkefu with Apache License 2.0 | 5 votes |
@SuppressWarnings({ "unchecked", "deprecation" }) @Bean(name="multiupdate") public Disruptor<UserDataEvent> multiupdate() { Executor executor = Executors.newCachedThreadPool(); MultiUpdateEventFactory factory = new MultiUpdateEventFactory(); Disruptor<UserDataEvent> disruptor = new Disruptor<UserDataEvent>(factory, 1024, executor, ProducerType.MULTI , new BlockingWaitStrategy()); disruptor.handleEventsWith(new MultiUpdateEventHandler()); disruptor.setDefaultExceptionHandler(new UKeFuExceptionHandler()); disruptor.start(); return disruptor; }
Example #24
Source File: DisruptorBenchmark.java From benchmarks with Apache License 2.0 | 5 votes |
@Setup public synchronized void setup() throws InterruptedException { for (int i = 0; i < MAX_THREAD_COUNT; i++) { responseQueues[i] = new OneToOneConcurrentArrayQueue<>(RESPONSE_QUEUE_CAPACITY); } values = new int[burstLength]; for (int i = 0; i < burstLength; i++) { values[i] = -(burstLength - i); } handler = new Handler(responseQueues); disruptor = new Disruptor<>( Message::new, Configuration.SEND_QUEUE_CAPACITY, (ThreadFactory)Thread::new, ProducerType.MULTI, new BusySpinWaitStrategy()); disruptor.handleEventsWith(handler); disruptor.start(); handler.waitForStart(); }
Example #25
Source File: AsyncLoggerConfigDisruptor.java From logging-log4j2 with Apache License 2.0 | 5 votes |
/** * Increases the reference count and creates and starts a new Disruptor and associated thread if none currently * exists. * * @see #stop() */ @Override public synchronized void start() { if (disruptor != null) { LOGGER.trace("AsyncLoggerConfigDisruptor not starting new disruptor for this configuration, " + "using existing object."); return; } LOGGER.trace("AsyncLoggerConfigDisruptor creating new disruptor for this configuration."); ringBufferSize = DisruptorUtil.calculateRingBufferSize("AsyncLoggerConfig.RingBufferSize"); final WaitStrategy waitStrategy = DisruptorUtil.createWaitStrategy("AsyncLoggerConfig.WaitStrategy"); final ThreadFactory threadFactory = new Log4jThreadFactory("AsyncLoggerConfig", true, Thread.NORM_PRIORITY) { @Override public Thread newThread(final Runnable r) { final Thread result = super.newThread(r); backgroundThreadId = result.getId(); return result; } }; asyncQueueFullPolicy = AsyncQueueFullPolicyFactory.create(); translator = mutable ? MUTABLE_TRANSLATOR : TRANSLATOR; factory = mutable ? MUTABLE_FACTORY : FACTORY; disruptor = new Disruptor<>(factory, ringBufferSize, threadFactory, ProducerType.MULTI, waitStrategy); final ExceptionHandler<Log4jEventWrapper> errorHandler = DisruptorUtil.getAsyncLoggerConfigExceptionHandler(); disruptor.setDefaultExceptionHandler(errorHandler); final Log4jEventWrapperHandler[] handlers = {new Log4jEventWrapperHandler()}; disruptor.handleEventsWith(handlers); LOGGER.debug("Starting AsyncLoggerConfig disruptor for this configuration with ringbufferSize={}, " + "waitStrategy={}, exceptionHandler={}...", disruptor.getRingBuffer().getBufferSize(), waitStrategy .getClass().getSimpleName(), errorHandler); disruptor.start(); super.start(); }
Example #26
Source File: WorkQueueDispatcher.java From camunda-bpm-reactor with Apache License 2.0 | 5 votes |
@SuppressWarnings("unchecked") public WorkQueueDispatcher(String name, int poolSize, int backlog, final Consumer<Throwable> uncaughtExceptionHandler) { this(name, poolSize, backlog, uncaughtExceptionHandler, ProducerType.MULTI, new BlockingWaitStrategy()); }
Example #27
Source File: RingBufferWorkerPoolFactory.java From netty-pubsub with MIT License | 5 votes |
/** * * @param type ���������� �������� �������� * @param bufferSize ringbuffer������ * @param waitStrategy �ȴ����� * @param messageConsumers ������ */ @SuppressWarnings("unchecked") public void initAndStart(ProducerType type, int bufferSize, WaitStrategy waitStrategy, MessageConsumer[] messageConsumers) { if(!startFlag){ //1. ����ringBuffer���� this.ringBuffer = RingBuffer.create(type, new EventFactory<MessageWrapper>() { public MessageWrapper newInstance() { return new MessageWrapper(); } }, bufferSize, waitStrategy); //2.�������դ�� this.sequenceBarrier = this.ringBuffer.newBarrier(); //3.���ù����� this.workerPool = new WorkerPool(this.ringBuffer, this.sequenceBarrier, new EventExceptionHandler(), messageConsumers); //4 ����������������������� for(MessageConsumer mc : messageConsumers){ this.consumers.put(mc.getConsumerId(), mc); } //5 ������ǵ�sequences this.ringBuffer.addGatingSequences(this.workerPool.getWorkerSequences()); //6 �������ǵĹ����� this.workerPool.start(Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()/2)); //7.����������־����ֹ�ظ����� startFlag=true; } }
Example #28
Source File: DisruptorConfig.java From match-trade with Apache License 2.0 | 5 votes |
@Bean public RingBuffer<MatchOrder> ringBuffer() { EventFactory<MatchOrder> factory = new OrderFactory(); int ringBufferSize = 1024 * 1024; ThreadFactory disruptorThreadPool = new ThreadFactoryBuilder().setNameFormat("DisruptorThreadPool").build(); Disruptor<MatchOrder> disruptor = new Disruptor<MatchOrder>(factory, ringBufferSize, disruptorThreadPool, ProducerType.MULTI, new YieldingWaitStrategy()); disruptor.setDefaultExceptionHandler(new MyHandlerException());// Disruptor异常统计 // 单线处理撮合, 并行处理盘口和订单薄 disruptor.handleEventsWithWorkerPool(new MatchHandler(),new MatchHandler()).then(new InputDepthHandler(),new OutDepthHandler()); disruptor.start(); return disruptor.getRingBuffer(); }
Example #29
Source File: Environment.java From camunda-bpm-reactor with Apache License 2.0 | 5 votes |
public RoundRobinSupplier(int poolsize, String name, int bufferSize, Consumer<Throwable> errorHandler, ProducerType producerType, WaitStrategy waitStrategy) { this.poolsize = poolsize; this.name = name; this.bufferSize = bufferSize; this.errorHandler = errorHandler; this.producerType = producerType; this.waitStrategy = waitStrategy; dispatchers = new Dispatcher[poolsize]; terminated = false; }
Example #30
Source File: FSHLog.java From hbase with Apache License 2.0 | 5 votes |
/** * Create an edit log at the given <code>dir</code> location. You should never have to load an * existing log. If there is a log at startup, it should have already been processed and deleted * by the time the WAL object is started up. * @param fs filesystem handle * @param rootDir path to where logs and oldlogs * @param logDir dir where wals are stored * @param archiveDir dir where wals are archived * @param conf configuration to use * @param listeners Listeners on WAL events. Listeners passed here will be registered before we do * anything else; e.g. the Constructor {@link #rollWriter()}. * @param failIfWALExists If true IOException will be thrown if files related to this wal already * exist. * @param prefix should always be hostname and port in distributed env and it will be URL encoded * before being used. If prefix is null, "wal" will be used * @param suffix will be url encoded. null is treated as empty. non-empty must start with * {@link org.apache.hadoop.hbase.wal.AbstractFSWALProvider#WAL_FILE_NAME_DELIMITER} */ public FSHLog(final FileSystem fs, final Path rootDir, final String logDir, final String archiveDir, final Configuration conf, final List<WALActionsListener> listeners, final boolean failIfWALExists, final String prefix, final String suffix) throws IOException { super(fs, rootDir, logDir, archiveDir, conf, listeners, failIfWALExists, prefix, suffix); this.minTolerableReplication = conf.getInt("hbase.regionserver.hlog.tolerable.lowreplication", CommonFSUtils.getDefaultReplication(fs, this.walDir)); this.lowReplicationRollLimit = conf.getInt("hbase.regionserver.hlog.lowreplication.rolllimit", 5); this.closeErrorsTolerated = conf.getInt("hbase.regionserver.logroll.errors.tolerated", 2); // This is the 'writer' -- a single threaded executor. This single thread 'consumes' what is // put on the ring buffer. String hostingThreadName = Thread.currentThread().getName(); // Using BlockingWaitStrategy. Stuff that is going on here takes so long it makes no sense // spinning as other strategies do. this.disruptor = new Disruptor<>(RingBufferTruck::new, getPreallocatedEventCount(), Threads.newDaemonThreadFactory(hostingThreadName + ".append"), ProducerType.MULTI, new BlockingWaitStrategy()); // Advance the ring buffer sequence so that it starts from 1 instead of 0, // because SyncFuture.NOT_DONE = 0. this.disruptor.getRingBuffer().next(); int maxHandlersCount = conf.getInt(HConstants.REGION_SERVER_HANDLER_COUNT, 200); this.ringBufferEventHandler = new RingBufferEventHandler( conf.getInt("hbase.regionserver.hlog.syncer.count", 5), maxHandlersCount); this.disruptor.setDefaultExceptionHandler(new RingBufferExceptionHandler()); this.disruptor.handleEventsWith(new RingBufferEventHandler[] { this.ringBufferEventHandler }); // Starting up threads in constructor is a no no; Interface should have an init call. this.disruptor.start(); }