/** * @param pConfig The physical source config for which the event producer is configured. * @param schemaRegistryService Schema registry to fetch schemas * @param dbusEventBuffer An event buffer to which the producer can write/append events. * @param statsCollector Reporting stats * @param maxScnReaderWriters To read/write the maxScn from maxScn file * @throws DatabusException */ public GoldenGateEventProducer( PhysicalSourceStaticConfig pConfig, SchemaRegistryService schemaRegistryService, DbusEventBufferAppendable dbusEventBuffer, DbusEventsStatisticsCollector statsCollector, MaxSCNReaderWriter maxScnReaderWriters) throws DatabusException { super(dbusEventBuffer, maxScnReaderWriters, pConfig, null); _pConfig = pConfig; _schemaRegistryService = schemaRegistryService; _statsCollector = statsCollector; _currentState = State.INIT; _partitionFunctionHashMap = new HashMap<Integer, PartitionFunction>(); _eventsLog = Logger.getLogger("com.linkedin.databus2.producers.db.events." + pConfig.getName()); if (_pConfig != null) { long eventRatePerSec = pConfig.getEventRatePerSec(); long maxThrottleDurationInSecs = pConfig.getMaxThrottleDurationInSecs(); if ((eventRatePerSec > 0) && (maxThrottleDurationInSecs > 0)) { _rc = new RateControl(eventRatePerSec, maxThrottleDurationInSecs); } else { // Disable rate control _rc = new RateControl(Long.MIN_VALUE, Long.MIN_VALUE); } } final String MODULE = GoldenGateEventProducer.class.getName(); _log = Logger.getLogger(MODULE + "." + getName()); // Create a hashmap for logical source id ==> PartitionFunction, this will be used as the // logical partition Id for the event creation // also create a list(map) of MonitoredSourceInfo objects to monitor GGEventProducer progress for (int i = 0; i < _pConfig.getSources().length; i++) { LogicalSourceStaticConfig logicalSourceStaticConfig = _pConfig.getSources()[i]; GGMonitoredSourceInfo source = buildGGMonitoredSourceInfo(logicalSourceStaticConfig, _pConfig); _monitoredSources.put(source.getSourceId(), source); } // get one fake global source for total stats LogicalSourceStaticConfig logicalSourceStaticConfig = new LogicalSourceStaticConfig( GLOBAL_SOURCE_ID, _pConfig.getName(), "", "constant:1", (short) 0, false, null, null, null); GGMonitoredSourceInfo source = buildGGMonitoredSourceInfo(logicalSourceStaticConfig, _pConfig); _monitoredSources.put(source.getSourceId(), source); // create stats collector for parser _ggParserStats = new GGParserStatistics(_pConfig.getName()); registerParserMbean(_ggParserStats); }