@Override public void onMessage(final Message<Date> m) { StripedRunnable task = new StripedRunnable() { @Override public int getKey() { return topicName.hashCode(); } @Override public void run() { System.out.println("Received: " + m.getMessageObject()); } }; EXECUTOR.execute(task); } }
@Probe(name = "eventQueueSize", level = MANDATORY) @Override public int getEventQueueSize() { return eventExecutor.getWorkQueueSize(); }
@Override public void execute(Runnable command) { if (command == null) { throw new NullPointerException("command can't be null"); } if (!live) { throw new RejectedExecutionException("Executor is terminated!"); } Worker worker = getWorker(command); worker.schedule(command); }
/** * {@inheritDoc} * If the execution is rejected, the rejection count is increased and a failure is logged. * The event callback is not re-executed. * * @param callback the callback to execute on a random event thread */ @Override public void executeEventCallback(Runnable callback) { if (!nodeEngine.isRunning()) { return; } try { eventExecutor.execute(callback); } catch (RejectedExecutionException e) { rejectedCount.inc(); if (eventExecutor.isLive()) { logFailure("EventQueue overloaded! Failed to execute event callback: %s", callback); } } }
public void shutdown() { eventExecutor.shutdown(); ClientExecutionServiceImpl.shutdownExecutor("registrationExecutor", registrationExecutor, logger); }
@Probe(level = MANDATORY) private long eventsProcessed() { return eventExecutor.processedCount(); }
public EventServiceImpl(NodeEngineImpl nodeEngine) { this.nodeEngine = nodeEngine; this.serializationService = (InternalSerializationService) nodeEngine.getSerializationService(); this.logger = nodeEngine.getLogger(EventService.class.getName()); HazelcastProperties hazelcastProperties = nodeEngine.getProperties(); this.eventThreadCount = hazelcastProperties.getInteger(EVENT_THREAD_COUNT); this.eventQueueCapacity = hazelcastProperties.getInteger(EVENT_QUEUE_CAPACITY); this.eventQueueTimeoutMs = hazelcastProperties.getMillis(EVENT_QUEUE_TIMEOUT_MILLIS); this.sendEventSyncTimeoutMillis = hazelcastProperties.getInteger(EVENT_SYNC_TIMEOUT_MILLIS); this.eventSyncFrequency = loadEventSyncFrequency(); this.eventExecutor = new StripedExecutor( nodeEngine.getNode().getLogger(EventServiceImpl.class), createThreadName(nodeEngine.getHazelcastInstance().getName(), "event"), eventThreadCount, eventQueueCapacity); this.segments = new ConcurrentHashMap<String, EventServiceSegment>(); }
private List<BlockingQueue<Runnable>> getEventQueues() { return eventExecutor.getWorkQueues(); }
private List<BlockingQueue<Runnable>> getEventQueues() { return eventExecutor.getTaskQueues(); }
/** * {@inheritDoc} * If the execution is rejected, the rejection count is increased and a failure is logged. * The event callback is not re-executed. * * @param callback the callback to execute on a random event thread */ @Override public void executeEventCallback(Runnable callback) { if (!nodeEngine.isRunning()) { return; } try { eventExecutor.execute(callback); } catch (RejectedExecutionException e) { rejectedCount.inc(); if (eventExecutor.isLive()) { logFailure("EventQueue overloaded! Failed to execute event callback: %s", callback); } } }
public void shutdown() { eventExecutor.shutdown(); ClientExecutionServiceImpl.shutdownExecutor("registrationExecutor", registrationExecutor, logger); }
@Probe(level = MANDATORY) private long eventsProcessed() { return eventExecutor.processedCount(); }
AbstractClientListenerService(HazelcastClientInstanceImpl client, int eventThreadCount, int eventQueueCapacity) { this.client = client; serializationService = client.getSerializationService(); logger = client.getLoggingService().getLogger(ClientListenerService.class); String name = client.getName(); eventExecutor = new StripedExecutor(logger, name + ".event", eventThreadCount, eventQueueCapacity); ClassLoader classLoader = client.getClientConfig().getClassLoader(); ThreadFactory threadFactory = new SingleExecutorThreadFactory(classLoader, name + ".eventRegistration-"); registrationExecutor = Executors.newSingleThreadScheduledExecutor(threadFactory); clientConnectionManager = client.getConnectionManager(); AbstractClientInvocationService invocationService = (AbstractClientInvocationService) client.getInvocationService(); invocationTimeoutMillis = invocationService.getInvocationTimeoutMillis(); invocationRetryPauseMillis = invocationService.getInvocationRetryPauseMillis(); }
/** * {@inheritDoc} * Handles an asynchronous remote event with a {@link RemoteEventProcessor}. The * processor may determine the thread which will handle the event. If the execution is rejected, * the rejection count is increased and a failure is logged. The event processing is not retried. * * @param packet the response packet to handle * @see #sendEvent(Address, EventEnvelope, int) */ @Override public void accept(Packet packet) { try { eventExecutor.execute(new RemoteEventProcessor(this, packet)); } catch (RejectedExecutionException e) { rejectedCount.inc(); if (eventExecutor.isLive()) { Connection conn = packet.getConn(); String endpoint = conn.getEndPoint() != null ? conn.getEndPoint().toString() : conn.toString(); logFailure("EventQueue overloaded! Failed to process event packet sent from: %s", endpoint); } } }
public void handleClientMessage(ClientMessage clientMessage) { try { eventExecutor.execute(new ClientEventProcessor(clientMessage)); } catch (RejectedExecutionException e) { logger.warning("Event clientMessage could not be handled", e); } }
@Probe(name = "eventQueueSize", level = MANDATORY) @Override public int getEventQueueSize() { return eventExecutor.getWorkQueueSize(); }
public void shutdown() { logger.finest("Stopping event executor..."); eventExecutor.shutdown(); for (EventServiceSegment segment : segments.values()) { segment.clear(); } segments.clear(); }
@Probe(level = MANDATORY) private long eventsProcessed() { return eventExecutor.processedCount(); }
public EventServiceImpl(NodeEngineImpl nodeEngine) { this.nodeEngine = nodeEngine; this.serializationService = (InternalSerializationService) nodeEngine.getSerializationService(); this.logger = nodeEngine.getLogger(EventService.class.getName()); HazelcastProperties hazelcastProperties = nodeEngine.getProperties(); this.eventThreadCount = hazelcastProperties.getInteger(EVENT_THREAD_COUNT); this.eventQueueCapacity = hazelcastProperties.getInteger(EVENT_QUEUE_CAPACITY); this.eventQueueTimeoutMs = hazelcastProperties.getMillis(EVENT_QUEUE_TIMEOUT_MILLIS); this.sendEventSyncTimeoutMillis = hazelcastProperties.getInteger(EVENT_SYNC_TIMEOUT_MILLIS); this.eventSyncFrequency = loadEventSyncFrequency(); this.eventExecutor = new StripedExecutor( nodeEngine.getNode().getLogger(EventServiceImpl.class), createThreadName(nodeEngine.getHazelcastInstance().getName(), "event"), eventThreadCount, eventQueueCapacity); this.segments = new ConcurrentHashMap<String, EventServiceSegment>(); }
@Override public void execute(Runnable task) { checkNotNull(task, "task can't be null"); if (!live) { throw new RejectedExecutionException("Executor is terminated!"); } Worker worker = getWorker(task); worker.schedule(task); }