public class RouterService extends AbstractService implements IRouterService
IRouterService| Modifier and Type | Field and Description |
|---|---|
protected long |
commonBatchesCacheTime |
protected java.util.Map<java.lang.String,java.lang.Boolean> |
commonBatchesLastKnownState |
protected java.util.Map<java.lang.String,java.lang.Boolean> |
defaultRouterOnlyLastKnownState |
protected long |
defaultRoutersCacheTime |
protected ISymmetricEngine |
engine |
protected IExtensionService |
extensionService |
protected boolean |
firstTimeCheck |
protected DataGapDetector |
gapDetector |
protected boolean |
hasMaxDataRoutedOnChannel |
protected java.util.Map<java.lang.String,CounterStat> |
invalidRouterType |
protected java.util.Map<java.lang.Integer,CounterStat> |
missingTriggerRouter |
protected java.util.concurrent.ExecutorService |
readThread |
protected long |
triggerRouterCacheTime |
log, parameterService, platform, sqlTemplate, sqlTemplateDirty, symmetricDialect, tablePrefix| Constructor and Description |
|---|
RouterService(ISymmetricEngine engine) |
| Modifier and Type | Method and Description |
|---|---|
protected org.jumpmind.db.model.Table |
buildTableFromTriggerHistory(TriggerHistory triggerHistory) |
protected void |
completeBatches(ChannelRouterContext context,
java.util.List<OutgoingBatch> batches,
java.util.Set<IDataRouter> usedRouters) |
protected void |
completeBatchesAndCommit(ChannelRouterContext context) |
protected java.util.Set<Node> |
findAvailableNodes(TriggerRouter triggerRouter,
ChannelRouterContext context) |
java.util.List<java.lang.String> |
getAvailableBatchAlgorithms()
Get a list of available batch algorithms that can be used for the different channels
|
java.util.List<DataGap> |
getDataGaps() |
protected IDataRouter |
getDataRouter(Router router) |
protected java.util.Set<java.lang.String> |
getReadyChannels() |
java.util.Map<java.lang.String,IDataRouter> |
getRouters() |
protected java.util.List<TriggerRouter> |
getTriggerRoutersForData(Data data) |
long |
getUnroutedDataCount() |
protected int |
insertDataEvents(ProcessInfo processInfo,
ChannelRouterContext context,
DataMetaData dataMetaData,
java.util.Collection<java.lang.String> nodeIds) |
protected boolean |
onlyDefaultRoutersAssigned(Channel channel,
java.lang.String nodeGroupId,
java.util.List<TriggerRouter> triggerRouters) |
protected boolean |
producesCommonBatches(Channel channel,
java.lang.String nodeGroupId,
java.util.List<TriggerRouter> triggerRouters)
Deprecated.
|
protected java.lang.String |
qualifyUsingDataGaps(java.util.List<DataGap> dataGaps,
int numberOfGapsToQualify,
java.lang.String sql) |
long |
routeData(boolean force)
This method will route data to specific nodes.
|
protected int |
routeData(ProcessInfo processInfo,
Data data,
ChannelRouterContext context) |
protected long |
routeDataForChannel(ProcessInfo processInfo,
NodeChannel nodeChannel,
Node sourceNode,
boolean isOverrideContainsBigLob,
java.util.Map<java.lang.String,OutgoingBatch> overrideBatchesByNodes,
java.util.Map<java.lang.Integer,java.util.Map<java.lang.String,OutgoingBatch>> overrideBatchesByGroups) |
protected long |
routeDataForEachChannel()
We route data channel by channel for two reasons.
|
protected long |
selectDataAndRoute(ProcessInfo processInfo,
ChannelRouterContext context)
Pre-read data and fill up a queue so we can peek ahead to see if we have
crossed a database transaction boundary.
|
boolean |
shouldDataBeRouted(SimpleRouterContext context,
DataMetaData dataMetaData,
Node node,
boolean initialLoad,
boolean initialLoadSelectUsed,
TriggerRouter triggerRouter)
For use in data load events
|
protected IDataToRouteReader |
startReading(ChannelRouterContext context) |
void |
stop() |
assertNotNull, buildBatchWhere, close, createSqlReplacementTokens, createSqlReplacementTokens, getJdbcTemplate, getParameterService, getSql, getSymmetricDialect, getTablePrefix, getTargetDialect, getTargetPlatform, getTargetPlatform, isCalledFromSymmetricAdminTool, isSet, isStreamClosedByClient, isSymmetricTable, logOnce, maxDate, readAcks, sendAck, setSqlMap, synchronize, toNodeIds, toNodeIdsclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetSql, synchronizeprotected java.util.Map<java.lang.Integer,CounterStat> missingTriggerRouter
protected java.util.Map<java.lang.String,CounterStat> invalidRouterType
protected long triggerRouterCacheTime
protected java.util.Map<java.lang.String,java.lang.Boolean> commonBatchesLastKnownState
protected long commonBatchesCacheTime
protected java.util.Map<java.lang.String,java.lang.Boolean> defaultRouterOnlyLastKnownState
protected long defaultRoutersCacheTime
protected transient java.util.concurrent.ExecutorService readThread
protected ISymmetricEngine engine
protected IExtensionService extensionService
protected DataGapDetector gapDetector
protected boolean firstTimeCheck
protected boolean hasMaxDataRoutedOnChannel
public RouterService(ISymmetricEngine engine)
public boolean shouldDataBeRouted(SimpleRouterContext context, DataMetaData dataMetaData, Node node, boolean initialLoad, boolean initialLoadSelectUsed, TriggerRouter triggerRouter)
shouldDataBeRouted in interface IRouterServicepublic void stop()
stop in interface IRouterServicepublic long routeData(boolean force)
routeData in interface IRouterServiceprotected long routeDataForEachChannel()
protected java.util.Set<java.lang.String> getReadyChannels()
protected java.lang.String qualifyUsingDataGaps(java.util.List<DataGap> dataGaps, int numberOfGapsToQualify, java.lang.String sql)
@Deprecated protected boolean producesCommonBatches(Channel channel, java.lang.String nodeGroupId, java.util.List<TriggerRouter> triggerRouters)
protected boolean onlyDefaultRoutersAssigned(Channel channel, java.lang.String nodeGroupId, java.util.List<TriggerRouter> triggerRouters)
protected long routeDataForChannel(ProcessInfo processInfo, NodeChannel nodeChannel, Node sourceNode, boolean isOverrideContainsBigLob, java.util.Map<java.lang.String,OutgoingBatch> overrideBatchesByNodes, java.util.Map<java.lang.Integer,java.util.Map<java.lang.String,OutgoingBatch>> overrideBatchesByGroups)
protected void completeBatchesAndCommit(ChannelRouterContext context)
protected void completeBatches(ChannelRouterContext context, java.util.List<OutgoingBatch> batches, java.util.Set<IDataRouter> usedRouters)
protected java.util.Set<Node> findAvailableNodes(TriggerRouter triggerRouter, ChannelRouterContext context)
protected IDataToRouteReader startReading(ChannelRouterContext context)
protected long selectDataAndRoute(ProcessInfo processInfo, ChannelRouterContext context) throws java.lang.InterruptedException
Data
while continuing to keep the queue filled until the result set is
entirely read.conn - The connection to use for selecting the data.context - The current context of the routing processjava.lang.InterruptedExceptionprotected int routeData(ProcessInfo processInfo, Data data, ChannelRouterContext context)
protected int insertDataEvents(ProcessInfo processInfo, ChannelRouterContext context, DataMetaData dataMetaData, java.util.Collection<java.lang.String> nodeIds)
protected IDataRouter getDataRouter(Router router)
protected java.util.List<TriggerRouter> getTriggerRoutersForData(Data data)
public long getUnroutedDataCount()
getUnroutedDataCount in interface IRouterServicepublic java.util.List<java.lang.String> getAvailableBatchAlgorithms()
IRouterServicegetAvailableBatchAlgorithms in interface IRouterServicepublic java.util.Map<java.lang.String,IDataRouter> getRouters()
getRouters in interface IRouterServicepublic java.util.List<DataGap> getDataGaps()
getDataGaps in interface IRouterServiceprotected org.jumpmind.db.model.Table buildTableFromTriggerHistory(TriggerHistory triggerHistory)