# Options of the mqtt() destination

The `mqtt()` destination has the following options.

Required options: `address()`, `fallback-topic()`, and `topic()`.

## address()

|   
---|---  
Type: | string  
Default: | `tcp://localhost:1883`  
Required: | yes  
  
_Description:_ Specifies the hostname or IP address, and the port number of the MQTT broker to which AxoSyslog will send the log messages.

Syntax: `<protocol type>://<host>:<port>`

Supported protocol types: `TCP`, `WS`, `SSL` and`WSS`.

## client-id()

|   
---|---  
Type: | string  
Default: | `syslog-ng-source-{topic option}`  
Required: | no  
  
_Description:_ The `client-id()` is used to identify the client to the MQTT server, which stores session data for each client. The session data can contains information regarding which message has been sent, received. It is not possible to set the `client-id()` to an empty string. To always start a new session see the `cleansession()` option.

## cleansession()

|   
---|---  
Type: | `yes` or `no`  
Default: | `no`  
  
_Description:_ This option instruments the MQTT broker to clean the session data when connecting. The session data contains information about which message was processed.

## fallback-topic()

|   
---|---  
Type: | string  
Default: | N/A  
  
_Description:_ Required option when using templates in the `topic()` option.

If the resolved `topic()` template is not a valid topic, AxoSyslog will use the `fallback-topic()` option to send messages.

Note If instead of strings, you use actual templates (that is, a macro like `${MESSAGE}`, or a template function like `$(format-json)`) in the `topic()` option, configuring the `fallback-topic()` option is required. 

Note Occasionally, the reason why AxoSyslog cannot post messages to the configured `topic()` is that the topic contains invalid characters that originate from templates. 

## http-proxy()

|   
---|---  
Type: | URL  
Default: | N/A  
  
_Description:_ Specifies HTTP/HTTPS proxy for WebSocket connections.

## keep-alive()

|   
---|---  
Type: | positive integer number (in seconds)  
Default: | `60`  
  
_Description:_ Specifies the number of seconds that AxoSyslog keeps the connection between the broker and clients open in case there is no message traffic. When `keep-alive()` number of seconds pass, the connection is terminated, and you have to reconnect.

On the MQTT side, the keep alive function provides a workaround method to access connections that are still open.

## password()

|   
---|---  
Type: | string  
Default: | N/A  
  
_Description:_ The password used to authenticate on the MQTT broker.

## qos()

Type: | number  
---|---  
Default: | `0`  
Possible values: | `0` - at most once (the fastest option) `1` - at least once (a much slower option than `0`) `2` - exactly once (the slowest option)  
  
_Description:_ The [Quality of Service (QoS) level](<https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels/>) in MQTT messaging is an agreement between sender and receiver on the guarantee of delivering a message.

## template()

|   
---|---  
Type: | string  
Default: | `$ISODATE $HOST $MSGHDR$MSG`  
  
_Description:_ Specifies the message template that AxoSyslog sends to the MQTT broker.

If you want to use macros in templates, see [Macros of AxoSyslog](../../../docs/axosyslog-core/chapter-manipulating-messages/customizing-message-format/reference-macros/index.md).

## tls()

|   
---|---  
Type: | tls options  
Default: | n/a  
  
_Description:_ This option sets various options related to TLS encryption, for example, key/certificate files and trusted CA locations. TLS can be used only with tcp-based transport protocols. For details, see [TLS options](../../../docs/axosyslog-core/chapter-encrypted-transport-tls/tlsoptions/index.md).

The following options are relevant for the `mqtt()` `tls()` block: `ca-dir()`, `ca-file()`, `cert-file()`, `cipher-suite()`, `key-file()`, `peer-verify()`, `ssl-version()`, `use-system-cert-store()`.

## topic()

|   
---|---  
Type: | string or template  
Default: | N/A  
  
_Description:_ Required option. Specifies the MQTT topic.

Note

The current implementation of the `mqtt()` destination does not support using the following characters for topic names:

  * `$`

  * `+`

  * `#`




## username()

|   
---|---  
Type: | string  
Default: | N/A  
  
_Description:_ The username used to authenticate on the MQTT broker.

Last modified June 27, 2023: [Moves content/docs to content/ to shorten output url (a5fcf1ed)](<https://github.com/axoflow/axosyslog-core-docs/commit/a5fcf1ed4956f586bc12af2b775e10aa75c1e630>)