Class ScheduledPollConsumer

java.lang.Object
org.apache.camel.support.service.BaseService
org.apache.camel.support.service.ServiceSupport
org.apache.camel.support.DefaultConsumer
org.apache.camel.support.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.HostedService, 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 Details

    • 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 Details

    • 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)
    • getScheduledExecutorService

      public ScheduledExecutorService getScheduledExecutorService()
    • isSchedulerStarted

      public boolean isSchedulerStarted()
    • setScheduledExecutorService

      public void setScheduledExecutorService(ScheduledExecutorService scheduledExecutorService)
    • getErrorCounter

      public 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

      public 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:
    • getCounter

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

      public boolean isFirstPollDone()
      Whether a first pool attempt has been done (also if the consumer has been restarted).
    • isConsumerReady

      public boolean isConsumerReady()
      Whether the consumer is ready and has established connection to its target system, or first poll has been completed successfully. The health-check is using this information to know when the consumer is ready for readiness checks.
    • forceConsumerAsReady

      protected void forceConsumerAsReady()
      Forces the consumer to be marked as ready. This can be used by components that need to mark this sooner than usual (default marked as ready after first poll is done). This allows health-checks to be ready before an entire poll is completed. This is for example needed by the FTP component as polling a large file can take long time, causing a health-check to not be ready within reasonable time.
    • 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
    • poll

      protected int poll(org.apache.camel.Exchange dynamic) throws Exception
      The polling method which is invoked periodically to poll this consumer, for components that support DynamicPollingConsumer such as camel-file.
      Parameters:
      dynamic - the current exchange when being used from Poll and PollEnrich EIPs in dynamic mode,
      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
    • doBuild

      protected void doBuild() throws Exception
      Overrides:
      doBuild in class DefaultConsumer
      Throws:
      Exception
    • 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.
    • doInit

      protected void doInit() throws Exception
      Overrides:
      doInit in class DefaultConsumer
      Throws:
      Exception
    • doStart

      protected void doStart() throws Exception
      Overrides:
      doStart in class DefaultConsumer
      Throws:
      Exception
    • 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.

    • doStop

      protected void doStop() throws Exception
      Overrides:
      doStop in class DefaultConsumer
      Throws:
      Exception
    • doShutdown

      protected void doShutdown() throws Exception
      Overrides:
      doShutdown in class DefaultConsumer
      Throws:
      Exception
    • 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