[[twitter-timeline-component]]
= Twitter Timeline Component
:page-source: components/camel-twitter/src/main/docs/twitter-timeline-component.adoc

*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 9 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
| *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. | polling | EndpointType
| *distanceMetric* (consumer) | Used by the 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 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 filter. A pair is defined as lat,lon. And multiple paris can be separated by semi colon. |  | String
| *longitude* (consumer) | Used by the 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. |  | PollingConsumerPollStrategy
| *radius* (consumer) | Used by the geography search to search by radius. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. |  | Double
| *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 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
| *repeatCount* (scheduler) | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0 | 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. |  | ScheduledExecutorService
| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
| *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, 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 10 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
|===
// spring-boot-auto-configure options: END

