Class ScheduledPollConsumer

  • All Implemented Interfaces:
    AutoCloseable, Runnable, org.apache.camel.Consumer, org.apache.camel.EndpointAware, org.apache.camel.health.HealthCheckAware, org.apache.camel.PollingConsumerPollingStrategy, org.apache.camel.RouteAware, org.apache.camel.Service, org.apache.camel.ShutdownableService, org.apache.camel.spi.RouteIdAware, org.apache.camel.StatefulService, org.apache.camel.Suspendable, org.apache.camel.SuspendableService
    Direct Known Subclasses:
    AbstractApiConsumer, DefaultScheduledPollConsumer, ScheduledBatchPollingConsumer

    public abstract class ScheduledPollConsumer
    extends DefaultConsumer
    implements Runnable, org.apache.camel.Suspendable, org.apache.camel.PollingConsumerPollingStrategy, org.apache.camel.health.HealthCheckAware
    A useful base class for any consumer which is polling based
    • Constructor Detail

      • ScheduledPollConsumer

        public ScheduledPollConsumer​(org.apache.camel.Endpoint endpoint,
                                     org.apache.camel.Processor processor)
      • ScheduledPollConsumer

        public ScheduledPollConsumer​(org.apache.camel.Endpoint endpoint,
                                     org.apache.camel.Processor processor,
                                     ScheduledExecutorService scheduledExecutorService)
    • Method Detail

      • run

        public void run()
        Invoked whenever we should be polled
        Specified by:
        run in interface Runnable
      • processEmptyMessage

        protected void processEmptyMessage()
                                    throws Exception
        No messages to poll so send an empty message instead.
        Throws:
        Exception - is thrown if error processing the empty message.
      • isPollAllowed

        protected boolean isPollAllowed()
      • isPolling

        public boolean isPolling()
        Whether polling is currently in progress
      • getScheduler

        public org.apache.camel.spi.ScheduledPollConsumerScheduler getScheduler()
      • setScheduler

        public void setScheduler​(org.apache.camel.spi.ScheduledPollConsumerScheduler scheduler)
      • getSchedulerProperties

        public Map<String,​Object> getSchedulerProperties()
      • setSchedulerProperties

        public void setSchedulerProperties​(Map<String,​Object> schedulerProperties)
      • getInitialDelay

        public long getInitialDelay()
      • setInitialDelay

        public void setInitialDelay​(long initialDelay)
      • getDelay

        public long getDelay()
      • setDelay

        public void setDelay​(long delay)
      • getTimeUnit

        public TimeUnit getTimeUnit()
      • setTimeUnit

        public void setTimeUnit​(TimeUnit timeUnit)
      • isUseFixedDelay

        public boolean isUseFixedDelay()
      • setUseFixedDelay

        public void setUseFixedDelay​(boolean useFixedDelay)
      • getRunLoggingLevel

        public org.apache.camel.LoggingLevel getRunLoggingLevel()
      • setRunLoggingLevel

        public void setRunLoggingLevel​(org.apache.camel.LoggingLevel runLoggingLevel)
      • getPollStrategy

        public org.apache.camel.spi.PollingConsumerPollStrategy getPollStrategy()
      • setPollStrategy

        public void setPollStrategy​(org.apache.camel.spi.PollingConsumerPollStrategy pollStrategy)
      • isStartScheduler

        public boolean isStartScheduler()
      • setStartScheduler

        public void setStartScheduler​(boolean startScheduler)
      • setSendEmptyMessageWhenIdle

        public void setSendEmptyMessageWhenIdle​(boolean sendEmptyMessageWhenIdle)
      • isSendEmptyMessageWhenIdle

        public boolean isSendEmptyMessageWhenIdle()
      • isGreedy

        public boolean isGreedy()
      • setGreedy

        public void setGreedy​(boolean greedy)
      • getBackoffCounter

        public int getBackoffCounter()
      • getBackoffMultiplier

        public int getBackoffMultiplier()
      • setBackoffMultiplier

        public void setBackoffMultiplier​(int backoffMultiplier)
      • getBackoffIdleThreshold

        public int getBackoffIdleThreshold()
      • setBackoffIdleThreshold

        public void setBackoffIdleThreshold​(int backoffIdleThreshold)
      • getBackoffErrorThreshold

        public int getBackoffErrorThreshold()
      • setBackoffErrorThreshold

        public void setBackoffErrorThreshold​(int backoffErrorThreshold)
      • getRepeatCount

        public long getRepeatCount()
      • setRepeatCount

        public void setRepeatCount​(long repeatCount)
      • isSchedulerStarted

        public boolean isSchedulerStarted()
      • setScheduledExecutorService

        public void setScheduledExecutorService​(ScheduledExecutorService scheduledExecutorService)
      • getErrorCounter

        protected long getErrorCounter()
        Gets the error counter. If the counter is > 0 that means the consumer failed polling for the last N number of times. When the consumer is successfully again, then the error counter resets to zero.
        See Also:
        getSuccessCounter()
      • getSuccessCounter

        protected long getSuccessCounter()
        Gets the success counter. If the success is > 0 that means the consumer succeeded polling for the last N number of times. When the consumer is failing again, then the success counter resets to zero.
        See Also:
        getErrorCounter()
      • getCounter

        protected long getCounter()
        Gets the total number of polls run.
      • isFirstPollDone

        protected boolean isFirstPollDone()
        Whether a first pool attempt has been done (also if the consumer has been restarted)
      • getLastError

        protected Throwable getLastError()
        Gets the last caused error (exception) for the last poll that failed. When the consumer is successfully again, then the error resets to null.
      • getLastErrorDetails

        protected Map<String,​Object> getLastErrorDetails()
        Gets the last caused error (exception) details for the last poll that failed. When the consumer is successfully again, then the error resets to null. Some consumers can provide additional error details here, besides the caused exception. For example if the consumer uses HTTP then the HealthCheck.HTTP_RESPONSE_CODE can be included.
        Returns:
        error details, or null if no details exists.
      • addLastErrorDetail

        protected void addLastErrorDetail​(String key,
                                          Object value)
        Adds a detail to the last caused error (exception) for the last poll that failed. When the consumer is successfully again, then the error resets to null. Some consumers can provide additional error details here, besides the caused exception. For example if the consumer uses HTTP then the HealthCheck.HTTP_RESPONSE_CODE can be included.
        Parameters:
        key - the key (see HealthCheck)
        value - the value
      • poll

        protected abstract int poll()
                             throws Exception
        The polling method which is invoked periodically to poll this consumer
        Returns:
        number of messages polled, will be 0 if no message was polled at all.
        Throws:
        Exception - can be thrown if an exception occurred during polling
      • initialHealthCheckState

        protected org.apache.camel.health.HealthCheck.State initialHealthCheckState()
        Used to allow special consumers to override the initial state of the health check (readiness check) during startup. Consumers that are internal only such as camel-scheduler uses UP as initial state because the scheduler may be configured to run only very in-frequently and therefore the overall health-check state would be affected and seen as DOWN.
        Returns:
        null to use the initial state configured, otherwise force using the returned state.
      • afterConfigureScheduler

        protected void afterConfigureScheduler​(org.apache.camel.spi.ScheduledPollConsumerScheduler scheduler,
                                               boolean newScheduler)
        After the scheduler has been configured
        Parameters:
        scheduler - the scheduler
        newScheduler - true if this consumer created a new scheduler, or false if an existing (shared) scheduler is being used
      • startScheduler

        public void startScheduler()
        Starts the scheduler.

        If the scheduler is already started, then this is a noop method call.

      • doSuspend

        protected void doSuspend()
                          throws Exception
        Overrides:
        doSuspend in class org.apache.camel.support.service.BaseService
        Throws:
        Exception
      • onInit

        public void onInit()
                    throws Exception
        Specified by:
        onInit in interface org.apache.camel.PollingConsumerPollingStrategy
        Throws:
        Exception
      • beforePoll

        public long beforePoll​(long timeout)
                        throws Exception
        Specified by:
        beforePoll in interface org.apache.camel.PollingConsumerPollingStrategy
        Throws:
        Exception
      • afterPoll

        public void afterPoll()
                       throws Exception
        Specified by:
        afterPoll in interface org.apache.camel.PollingConsumerPollingStrategy
        Throws:
        Exception