org.apache.camel.component.seda
Class SedaConsumer

java.lang.Object
  extended by org.apache.camel.support.ServiceSupport
      extended by org.apache.camel.component.seda.SedaConsumer
All Implemented Interfaces:
Runnable, Consumer, Service, ShutdownableService, ShutdownAware, ShutdownPrepared, StatefulService, SuspendableService

public class SedaConsumer
extends ServiceSupport
implements Consumer, Runnable, ShutdownAware, SuspendableService

A Consumer for the SEDA component.

In this implementation there is a little slack period when you suspend/stop the consumer, by which the consumer may pickup a newly arrived messages and process it. That period is up till 1 second.

Version:

Field Summary
 
Fields inherited from class org.apache.camel.support.ServiceSupport
shutdown, shuttingdown, started, starting, stopped, stopping, suspended, suspending
 
Constructor Summary
SedaConsumer(SedaEndpoint endpoint, Processor processor)
           
 
Method Summary
 boolean deferShutdown(ShutdownRunningTask shutdownRunningTask)
          To defer shutdown during first phase of shutdown.
protected  void doResume()
          Implementations override this method to support customized suspend/resume.
protected  void doRun()
           
protected  void doShutdown()
          Implementations override this method to perform customized shutdown.
protected  void doStart()
          Implementations override this method to support customized start/stop.
protected  void doStop()
          Implementations override this method to support customized start/stop.
protected  void doSuspend()
          Implementations override this method to support customized suspend/resume.
 Endpoint getEndpoint()
          Gets the endpoint this Consumer consumes from.
 ExceptionHandler getExceptionHandler()
           
 int getPendingExchangesSize()
          Gets the number of pending exchanges.
 Processor getProcessor()
           
 boolean isRunAllowed()
          Helper methods so the service knows if it should keep running.
protected  Exchange prepareExchange(Exchange exchange)
          Strategy to prepare exchange for being processed by this consumer
 void prepareShutdown(boolean forced)
          Prepares for shutdown.
 void run()
           
protected  void sendToConsumers(Exchange exchange)
          Send the given Exchange to the consumer(s).
 void setExceptionHandler(ExceptionHandler exceptionHandler)
           
 String toString()
           
 
Methods inherited from class org.apache.camel.support.ServiceSupport
getStatus, getVersion, isStarted, isStarting, isStopped, isStopping, isSuspended, isSuspending, resume, shutdown, start, stop, suspend
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.apache.camel.SuspendableService
isSuspended, resume, suspend
 
Methods inherited from interface org.apache.camel.Service
start, stop
 

Constructor Detail

SedaConsumer

public SedaConsumer(SedaEndpoint endpoint,
                    Processor processor)
Method Detail

toString

public String toString()
Overrides:
toString in class Object

getEndpoint

public Endpoint getEndpoint()
Description copied from interface: Consumer
Gets the endpoint this Consumer consumes from.

Specified by:
getEndpoint in interface Consumer
Returns:
the endpoint

getExceptionHandler

public ExceptionHandler getExceptionHandler()

setExceptionHandler

public void setExceptionHandler(ExceptionHandler exceptionHandler)

getProcessor

public Processor getProcessor()

deferShutdown

public boolean deferShutdown(ShutdownRunningTask shutdownRunningTask)
Description copied from interface: ShutdownAware
To defer shutdown during first phase of shutdown. This allows any pending exchanges to be completed and therefore ensure a graceful shutdown without loosing messages. At the very end when there are no more inflight and pending messages the consumer could then safely be shutdown.

This is needed by SedaConsumer.

Specified by:
deferShutdown in interface ShutdownAware
Parameters:
shutdownRunningTask - the configured option for how to act when shutting down running tasks.
Returns:
true to defer shutdown to very last.

getPendingExchangesSize

public int getPendingExchangesSize()
Description copied from interface: ShutdownAware
Gets the number of pending exchanges.

Some consumers has internal queues with Exchange which are pending. For example the SedaConsumer.

Return zero to indicate no pending exchanges and therefore ready to shutdown.

Specified by:
getPendingExchangesSize in interface ShutdownAware
Returns:
number of pending exchanges

prepareShutdown

public void prepareShutdown(boolean forced)
Description copied from interface: ShutdownPrepared
Prepares for shutdown.

The ShutdownStrategy supports preparing for shutdown using two steps. First a regular preparation, where the given forced parameter will be false. And if the shutdown times out, then the ShutdownStrategy performs a more aggressive shutdown, calling this method a second time with true for the given forced parameter.

For example by graceful stopping any threads or the likes.

For forced shutdown, then the service is expected to aggressively shutdown any child services, such as thread pools etc. This is the last chance it has to perform such duties.

Specified by:
prepareShutdown in interface ShutdownPrepared
Parameters:
forced - true is forcing a more aggressive shutdown, false is for preparing to shutdown.

isRunAllowed

public boolean isRunAllowed()
Description copied from interface: StatefulService
Helper methods so the service knows if it should keep running. Returns false if the service is being stopped or is stopped.

Specified by:
isRunAllowed in interface StatefulService
Overrides:
isRunAllowed in class ServiceSupport
Returns:
true if the service should continue to run.

run

public void run()
Specified by:
run in interface Runnable

doRun

protected void doRun()

prepareExchange

protected Exchange prepareExchange(Exchange exchange)
Strategy to prepare exchange for being processed by this consumer

Parameters:
exchange - the exchange
Returns:
the exchange to process by this consumer.

sendToConsumers

protected void sendToConsumers(Exchange exchange)
                        throws Exception
Send the given Exchange to the consumer(s).

If multiple consumers then they will each receive a copy of the Exchange. A multicast processor will send the exchange in parallel to the multiple consumers.

If there is only a single consumer then its dispatched directly to it using same thread.

Parameters:
exchange - the exchange
Throws:
Exception - can be thrown if processing of the exchange failed

doStart

protected void doStart()
                throws Exception
Description copied from class: ServiceSupport
Implementations override this method to support customized start/stop.

Important: See ServiceSupport.doStop() for more details.

Specified by:
doStart in class ServiceSupport
Throws:
Exception
See Also:
ServiceSupport.doStop()

doSuspend

protected void doSuspend()
                  throws Exception
Description copied from class: ServiceSupport
Implementations override this method to support customized suspend/resume.

Overrides:
doSuspend in class ServiceSupport
Throws:
Exception

doResume

protected void doResume()
                 throws Exception
Description copied from class: ServiceSupport
Implementations override this method to support customized suspend/resume.

Overrides:
doResume in class ServiceSupport
Throws:
Exception

doStop

protected void doStop()
               throws Exception
Description copied from class: ServiceSupport
Implementations override this method to support customized start/stop.

Important: Camel will invoke this ServiceSupport.doStop() method when the service is being stopped. This method will also be invoked if the service is still in uninitialized state (eg has not been started). The method is always called to allow the service to do custom logic when the service is being stopped, such as when CamelContext is shutting down.

Specified by:
doStop in class ServiceSupport
Throws:
Exception
See Also:
ServiceSupport.doStart()

doShutdown

protected void doShutdown()
                   throws Exception
Description copied from class: ServiceSupport
Implementations override this method to perform customized shutdown.

Overrides:
doShutdown in class ServiceSupport
Throws:
Exception


Apache CAMEL