All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.ebay.jetstream.event.processor.EventProcessRequest Maven / Gradle / Ivy

/*******************************************************************************
 *  Copyright © 2012-2015 eBay Software Foundation
 *  This program is dual licensed under the MIT and Apache 2.0 licenses.
 *  Please see LICENSE for more information.
 *******************************************************************************/
package com.ebay.jetstream.event.processor;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.ebay.jetstream.event.JetstreamEvent;
import com.ebay.jetstream.event.MonitorableStatCollector;
import com.ebay.jetstream.event.support.ErrorTracker;
import com.ebay.jetstream.util.Request;

public abstract class EventProcessRequest extends Request  {

	private static final Logger LOGGER = LoggerFactory.getLogger("com.ebay.jetstream.event.processor");
	
	private final JetstreamEvent m_event;
	private final MonitorableStatCollector m_parent;
	
	protected EventProcessRequest(JetstreamEvent event, MonitorableStatCollector parent) {
		m_event = event;
		m_parent = parent;
	}

	public JetstreamEvent getEvent() {
		return m_event;
	}
	
	protected MonitorableStatCollector getStatCollector() {
		return m_parent;
	}
	
	@Override
	public boolean execute() {
		MonitorableStatCollector stats = getStatCollector();
		try {
			processEvent(m_event);
			afterEventProcessed(m_event, stats);
			
			return true;
		} 
		catch (Throwable t) {
			
			if (stats instanceof ErrorTracker)
				((ErrorTracker)stats).registerError(t, m_event);
			
			if (stats != null)
				stats.incrementEventDroppedCounter();
			
			LOGGER.error("failed to process event" + t.getMessage());
			
			return false;
		}
	}
	
	protected void afterEventProcessed(JetstreamEvent event, MonitorableStatCollector stats) {
		if (stats instanceof AbstractQueuedEventProcessor)
			((AbstractQueuedEventProcessor)stats).postEventProcessed(event);
		else if (stats != null)
			stats.incrementEventSentCounter();
	}
	
	protected abstract void processEvent(JetstreamEvent event) throws Exception;
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy