public StandardFlowFileQueue(final String identifier, final ConnectionEventListener eventListener, final FlowFileRepository flowFileRepo, final ProvenanceEventRepository provRepo, final ResourceClaimManager resourceClaimManager, final ProcessScheduler scheduler, final FlowFileSwapManager swapManager, final EventReporter eventReporter, final int swapThreshold, final long defaultBackPressureObjectThreshold, final String defaultBackPressureDataSizeThreshold) { super(identifier, scheduler, flowFileRepo, provRepo, resourceClaimManager); this.swapManager = swapManager; this.queue = new SwappablePriorityQueue(swapManager, swapThreshold, eventReporter, this, this::drop, null); this.eventListener = eventListener; writeLock = new TimedLock(this.lock.writeLock(), getIdentifier() + " Write Lock", 100); setBackPressureDataSizeThreshold(defaultBackPressureDataSizeThreshold); setBackPressureObjectThreshold(defaultBackPressureObjectThreshold); }
@Override public FlowFileRecord poll(final Set<FlowFileRecord> expiredRecords) { // First check if we have any records Pre-Fetched. final long expirationMillis = getFlowFileExpiration(TimeUnit.MILLISECONDS); return queue.poll(expiredRecords, expirationMillis); }
@Override public String toString() { return "FlowFileQueue[id=" + getIdentifier() + "]"; }
@Override public FlowFileQueue createFlowFileQueue(final LoadBalanceStrategy loadBalanceStrategy, final String partitioningAttribute, final ConnectionEventListener eventListener) { final FlowFileQueue flowFileQueue; if (clusterCoordinator == null) { flowFileQueue = new StandardFlowFileQueue(id, eventListener, flowFileRepository, provenanceRepository, resourceClaimManager, processScheduler, swapManager, eventReporter, nifiProperties.getQueueSwapThreshold(), nifiProperties.getDefaultBackPressureObjectThreshold(), nifiProperties.getDefaultBackPressureDataSizeThreshold()); } else { flowFileQueue = new SocketLoadBalancedFlowFileQueue(id, eventListener, processScheduler, flowFileRepository, provenanceRepository, contentRepository, resourceClaimManager, clusterCoordinator, loadBalanceClientRegistry, swapManager, nifiProperties.getQueueSwapThreshold(), eventReporter); flowFileQueue.setBackPressureObjectThreshold(nifiProperties.getDefaultBackPressureObjectThreshold()); flowFileQueue.setBackPressureDataSizeThreshold(nifiProperties.getDefaultBackPressureDataSizeThreshold()); } return flowFileQueue; } };
@Override public List<FlowFileRecord> poll(int maxResults, final Set<FlowFileRecord> expiredRecords) { return queue.poll(maxResults, expiredRecords, getFlowFileExpiration(TimeUnit.MILLISECONDS)); }
@Override public List<FlowFileRecord> poll(final FlowFileFilter filter, final Set<FlowFileRecord> expiredRecords) { return queue.poll(filter, expiredRecords, getFlowFileExpiration(TimeUnit.MILLISECONDS)); }