[[twitter-timeline-component]]
== Twitter Timeline Component

*Available as of Camel version 2.10*

The Twitter Timeline component consumes twitter timeline or update the status of specific user.

### Component Options

// component options: START
The Twitter Timeline component supports 10 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *accessToken* (security) | The access token |  | String
| *accessTokenSecret* (security) | The access token secret |  | String
| *consumerKey* (security) | The consumer key |  | String
| *consumerSecret* (security) | The consumer secret |  | String
| *httpProxyHost* (proxy) | The http proxy host which can be used for the camel-twitter. |  | String
| *httpProxyUser* (proxy) | The http proxy user which can be used for the camel-twitter. |  | String
| *httpProxyPassword* (proxy) | The http proxy password which can be used for the camel-twitter. |  | String
| *httpProxyPort* (proxy) | The http proxy port which can be used for the camel-twitter. |  | int
| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
| *basicPropertyBinding* (advanced) | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
|===
// component options: END


### Endpoint Options

// endpoint options: START
The Twitter Timeline endpoint is configured using URI syntax:

----
twitter-timeline:timelineType
----

with the following path and query parameters:

==== Path Parameters (1 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *timelineType* | *Required* The timeline type to produce/consume. |  | TimelineType
|===


==== Query Parameters (45 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *user* (common) | The username when using timelineType=user |  | String
| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
| *sendEmptyMessageWhenIdle* (consumer) | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | boolean
| *type* (consumer) | Endpoint type to use. Only streaming supports event type. | polling | EndpointType
| *distanceMetric* (consumer) | Used by the non-stream geography search, to search by radius using the configured metrics. The unit can either be mi for miles, or km for kilometers. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. | km | String
| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
| *extendedMode* (consumer) | Used for enabling full text from twitter (eg receive tweets that contains more than 140 characters). | true | boolean
| *latitude* (consumer) | Used by the non-stream geography search to search by latitude. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. |  | Double
| *locations* (consumer) | Bounding boxes, created by pairs of lat/lons. Can be used for streaming/filter. A pair is defined as lat,lon. And multiple paris can be separated by semi colon. |  | String
| *longitude* (consumer) | Used by the non-stream geography search to search by longitude. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. |  | Double
| *pollStrategy* (consumer) | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. |  | PollingConsumerPoll Strategy
| *radius* (consumer) | Used by the non-stream geography search to search by radius. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. |  | Double
| *twitterStream* (consumer) | To use a custom instance of TwitterStream |  | TwitterStream
| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | boolean
| *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
| *count* (filter) | Limiting number of results per page. | 5 | Integer
| *filterOld* (filter) | Filter out old tweets, that has previously been polled. This state is stored in memory only, and based on last tweet id. | true | boolean
| *lang* (filter) | The lang string ISO_639-1 which will be used for searching |  | String
| *numberOfPages* (filter) | The number of pages result which you want camel-twitter to consume. | 1 | Integer
| *sinceId* (filter) | The last tweet id which will be used for pulling the tweets. It is useful when the camel route is restarted after a long running. | 1 | long
| *userIds* (filter) | To filter by user ids for streaming/filter. Multiple values can be separated by comma. |  | String
| *backoffErrorThreshold* (scheduler) | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. |  | int
| *backoffIdleThreshold* (scheduler) | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. |  | int
| *backoffMultiplier* (scheduler) | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. |  | int
| *delay* (scheduler) | Milliseconds before the next poll. | 30000 | long
| *greedy* (scheduler) | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | boolean
| *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
| *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
| *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz2 component | none | ScheduledPollConsumer Scheduler
| *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz2, Spring based scheduler. |  | Map
| *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
| *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
| *useFixedDelay* (scheduler) | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | boolean
| *sortById* (sort) | Sorts by id, so the oldest are first, and newest last. | true | boolean
| *httpProxyHost* (proxy) | The http proxy host which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. |  | String
| *httpProxyPassword* (proxy) | The http proxy password which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. |  | String
| *httpProxyPort* (proxy) | The http proxy port which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. |  | Integer
| *httpProxyUser* (proxy) | The http proxy user which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. |  | String
| *accessToken* (security) | The access token. Can also be configured on the TwitterComponent level instead. |  | String
| *accessTokenSecret* (security) | The access secret. Can also be configured on the TwitterComponent level instead. |  | String
| *consumerKey* (security) | The consumer key. Can also be configured on the TwitterComponent level instead. |  | String
| *consumerSecret* (security) | The consumer secret. Can also be configured on the TwitterComponent level instead. |  | String
|===
// endpoint options: END
// spring-boot-auto-configure options: START
=== Spring Boot Auto-Configuration

When using Spring Boot make sure to use the following Maven dependency to have support for auto configuration:

[source,xml]
----
<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-twitter-starter</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel core version -->
</dependency>
----


The component supports 11 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *camel.component.twitter-timeline.access-token* | The access token |  | String
| *camel.component.twitter-timeline.access-token-secret* | The access token secret |  | String
| *camel.component.twitter-timeline.basic-property-binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | Boolean
| *camel.component.twitter-timeline.consumer-key* | The consumer key |  | String
| *camel.component.twitter-timeline.consumer-secret* | The consumer secret |  | String
| *camel.component.twitter-timeline.enabled* | Whether to enable auto configuration of the twitter-timeline component. This is enabled by default. |  | Boolean
| *camel.component.twitter-timeline.http-proxy-host* | The http proxy host which can be used for the camel-twitter. |  | String
| *camel.component.twitter-timeline.http-proxy-password* | The http proxy password which can be used for the camel-twitter. |  | String
| *camel.component.twitter-timeline.http-proxy-port* | The http proxy port which can be used for the camel-twitter. |  | Integer
| *camel.component.twitter-timeline.http-proxy-user* | The http proxy user which can be used for the camel-twitter. |  | String
| *camel.component.twitter-timeline.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
|===
// spring-boot-auto-configure options: END

