camel-elsql-kafka-connector sink configuration

When using camel-elsql-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:

<dependency>
  <groupId>org.apache.camel.kafkaconnector</groupId>
  <artifactId>camel-elsql-kafka-connector</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel Kafka connector version -->
</dependency>

To use this Sink connector in Kafka connect you’ll need to set the following connector.class

connector.class=org.apache.camel.kafkaconnector.elsql.CamelElsqlSinkConnector

The camel-elsql sink connector supports 29 options, which are listed below.

Name Description Default Priority

camel.sink.path.elsqlName

The name of the elsql to use (is NAMED in the elsql file)

null

HIGH

camel.sink.path.resourceUri

The resource file which contains the elsql SQL statements to use. You can specify multiple resources separated by comma. The resources are loaded on the classpath by default, you can prefix with file: to load from file system. Notice you can set this option on the component and then you do not have to configure this on the endpoint.

null

MEDIUM

camel.sink.endpoint.allowNamedParameters

Whether to allow using named parameters in the queries.

true

MEDIUM

camel.sink.endpoint.databaseVendor

To use a vendor specific com.opengamma.elsql.ElSqlConfig One of: [Default] [Postgres] [HSql] [MySql] [Oracle] [SqlServer2008] [Veritca]

null

MEDIUM

camel.sink.endpoint.dataSource

Sets the DataSource to use to communicate with the database.

null

MEDIUM

camel.sink.endpoint.dataSourceRef

Sets the reference to a DataSource to lookup from the registry, to use for communicating with the database.

null

LOW

camel.sink.endpoint.outputClass

Specify the full package and class name to use as conversion when outputType=SelectOne.

null

MEDIUM

camel.sink.endpoint.outputHeader

Store the query result in a header instead of the message body. By default, outputHeader == null and the query result is stored in the message body, any existing content in the message body is discarded. If outputHeader is set, the value is used as the name of the header to store the query result and the original message body is preserved.

null

MEDIUM

camel.sink.endpoint.outputType

Make the output of consumer or producer to SelectList as List of Map, or SelectOne as single Java object in the following way: a) If the query has only single column, then that JDBC Column object is returned. (such as SELECT COUNT( ) FROM PROJECT will return a Long object. b) If the query has more than one column, then it will return a Map of that result. c) If the outputClass is set, then it will convert the query result into an Java bean object by calling all the setters that match the column names. It will assume your class has a default constructor to create instance with. d) If the query resulted in more than one rows, it throws an non-unique result exception. StreamList streams the result of the query using an Iterator. This can be used with the Splitter EIP in streaming mode to process the ResultSet in streaming fashion. One of: [SelectOne] [SelectList] [StreamList]

"SelectList"

MEDIUM

camel.sink.endpoint.separator

The separator to use when parameter values is taken from message body (if the body is a String type), to be inserted at # placeholders. Notice if you use named parameters, then a Map type is used instead. The default value is comma

","

MEDIUM

camel.sink.endpoint.batch

Enables or disables batch mode

false

MEDIUM

camel.sink.endpoint.lazyStartProducer

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

MEDIUM

camel.sink.endpoint.noop

If set, will ignore the results of the SQL query and use the existing IN message as the OUT message for the continuation of processing

false

MEDIUM

camel.sink.endpoint.useMessageBodyForSql

Whether to use the message body as the SQL and then headers for parameters. If this option is enabled then the SQL in the uri is not used. Note that query parameters in the message body are represented by a question mark instead of a # symbol.

false

MEDIUM

camel.sink.endpoint.alwaysPopulateStatement

If enabled then the populateStatement method from org.apache.camel.component.sql.SqlPrepareStatementStrategy is always invoked, also if there is no expected parameters to be prepared. When this is false then the populateStatement is only invoked if there is 1 or more expected parameters to be set; for example this avoids reading the message body/headers for SQL queries with no parameters.

false

MEDIUM

camel.sink.endpoint.basicPropertyBinding

Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities

false

MEDIUM

camel.sink.endpoint.elSqlConfig

To use a specific configured ElSqlConfig. It may be better to use the databaseVendor option instead.

null

MEDIUM

camel.sink.endpoint.parametersCount

If set greater than zero, then Camel will use this count value of parameters to replace instead of querying via JDBC metadata API. This is useful if the JDBC vendor could not return correct parameters count, then user may override instead.

null

MEDIUM

camel.sink.endpoint.placeholder

Specifies a character that will be replaced to in SQL query. Notice, that it is simple String.replaceAll() operation and no SQL parsing is involved (quoted strings will also change).

"#"

MEDIUM

camel.sink.endpoint.prepareStatementStrategy

Allows to plugin to use a custom org.apache.camel.component.sql.SqlPrepareStatementStrategy to control preparation of the query and prepared statement.

null

MEDIUM

camel.sink.endpoint.synchronous

Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported).

false

MEDIUM

camel.sink.endpoint.templateOptions

Configures the Spring JdbcTemplate with the key/values from the Map

null

MEDIUM

camel.sink.endpoint.usePlaceholder

Sets whether to use placeholder and replace all placeholder characters with sign in the SQL queries.

true

MEDIUM

camel.component.elsql.databaseVendor

To use a vendor specific com.opengamma.elsql.ElSqlConfig One of: [Default] [Postgres] [HSql] [MySql] [Oracle] [SqlServer2008] [Veritca]

null

MEDIUM

camel.component.elsql.dataSource

Sets the DataSource to use to communicate with the database.

null

MEDIUM

camel.component.elsql.resourceUri

The resource file which contains the elsql SQL statements to use. You can specify multiple resources separated by comma. The resources are loaded on the classpath by default, you can prefix with file: to load from file system. Notice you can set this option on the component and then you do not have to configure this on the endpoint.

null

MEDIUM

camel.component.elsql.lazyStartProducer

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

MEDIUM

camel.component.elsql.basicPropertyBinding

Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities

false

MEDIUM

camel.component.elsql.elSqlConfig

To use a specific configured ElSqlConfig. It may be better to use the databaseVendor option instead.

null

MEDIUM