// kafka-connector options: START
[[camel-sips-kafka-connector-sink]]
= camel-sips-kafka-connector sink configuration

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

[source,xml]
----
<dependency>
  <groupId>org.apache.camel.kafkaconnector</groupId>
  <artifactId>camel-sips-kafka-connector</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel Kafka connector version -->
</dependency>
----


The camel-sips sink connector supports 44 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Priority
| *camel.sink.path.uri* | URI of the SIP server to connect to (the username and password can be included such as: john:secretmyserver:9999) | null | ConfigDef.Importance.HIGH
| *camel.sink.endpoint.cacheConnections* | Should connections be cached by the SipStack to reduce cost of connection creation. This is useful if the connection is used for long running conversations. | false | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.contentSubType* | Setting for contentSubType can be set to any valid MimeSubType. | "plain" | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.contentType* | Setting for contentType can be set to any valid MimeType. | "text" | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.eventHeaderName* | Setting for a String based event type. | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.eventId* | Setting for a String based event Id. Mandatory setting unless a registry based FromHeader is specified | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.fromHost* | Hostname of the message originator. Mandatory setting unless a registry based FromHeader is specified | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.fromPort* | Port of the message originator. Mandatory setting unless a registry based FromHeader is specified | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.fromUser* | Username of the message originator. Mandatory setting unless a registry based custom FromHeader is specified. | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.msgExpiration* | The amount of time a message received at an endpoint is considered valid | 3600 | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.receiveTimeoutMillis* | Setting for specifying amount of time to wait for a Response and/or Acknowledgement can be received from another SIP stack | 10000L | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.stackName* | Name of the SIP Stack instance associated with an SIP Endpoint. | "NAME_NOT_SET" | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.toHost* | Hostname of the message receiver. Mandatory setting unless a registry based ToHeader is specified | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.toPort* | Portname of the message receiver. Mandatory setting unless a registry based ToHeader is specified | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.toUser* | Username of the message receiver. Mandatory setting unless a registry based custom ToHeader is specified. | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.transport* | Setting for choice of transport protocol. Valid choices are tcp or udp. One of: [tcp] [udp] | "tcp" | ConfigDef.Importance.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 | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.addressFactory* | To use a custom AddressFactory | null | ConfigDef.Importance.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 | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.callIdHeader* | A custom Header object containing call details. Must implement the type javax.sip.header.CallIdHeader | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.contactHeader* | An optional custom Header object containing verbose contact details (email, phone number etc). Must implement the type javax.sip.header.ContactHeader | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.contentTypeHeader* | A custom Header object containing message content details. Must implement the type javax.sip.header.ContentTypeHeader | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.eventHeader* | A custom Header object containing event details. Must implement the type javax.sip.header.EventHeader | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.expiresHeader* | A custom Header object containing message expiration details. Must implement the type javax.sip.header.ExpiresHeader | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.extensionHeader* | A custom Header object containing user/application specific details. Must implement the type javax.sip.header.ExtensionHeader | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.fromHeader* | A custom Header object containing message originator settings. Must implement the type javax.sip.header.FromHeader | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.headerFactory* | To use a custom HeaderFactory | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.listeningPoint* | To use a custom ListeningPoint implementation | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.maxForwardsHeader* | A custom Header object containing details on maximum proxy forwards. This header places a limit on the viaHeaders possible. Must implement the type javax.sip.header.MaxForwardsHeader | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.maxMessageSize* | Setting for maximum allowed Message size in bytes. | 1048576 | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.messageFactory* | To use a custom MessageFactory | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.sipFactory* | To use a custom SipFactory to create the SipStack to be used | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.sipStack* | To use a custom SipStack | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.sipUri* | To use a custom SipURI. If none configured, then the SipUri fallback to use the options toUser toHost:toPort | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.toHeader* | A custom Header object containing message receiver settings. Must implement the type javax.sip.header.ToHeader | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.viaHeaders* | List of custom Header objects of the type javax.sip.header.ViaHeader. Each ViaHeader containing a proxy address for request forwarding. (Note this header is automatically updated by each proxy when the request arrives at its listener) | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.implementationDebugLogFile* | Name of client debug log file to use for logging | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.implementationServerLogFile* | Name of server log file to use for logging | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.implementationTraceLevel* | Logging level for tracing | "0" | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.maxForwards* | Number of maximum proxy forwards | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.useRouterForAllUris* | This setting is used when requests are sent to the Presence Agent via a proxy. | false | ConfigDef.Importance.MEDIUM
| *camel.component.sips.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 | ConfigDef.Importance.MEDIUM
| *camel.component.sips.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
|===
// kafka-connector options: END
