Configuring Connection Details 
                                                            This section provides instructions for configuring the connection details required to establish communication between the Micro-Integration and your third-party system.
For information about configuring the connection to the event broker, see Connecting to Your Event Broker.
This Micro-Integration supports workflows in the following directions:
- 
                                                                        Solace to MQTT 
- 
                                                                        MQTT to Solace 
The name of the binder for MQTT is mqtt.
Workflow Configuration Options
The default values for the options in the following table differ from the common settings listed in Enabling Workflows.
These options are defined under the following prefixes:
- solace.connector.workflows.<workflow-id>.: If the options support per-workflow configuration and the default prefixes.
- solace.connector.default.workflow.: If the options support default workflow configuration.
| Config Option | Applicable Scopes | Type | Valid Values | Default Value | Description | 
|---|---|---|---|---|---|
| 
 | Per-Workflow Default | 
 | 
 | 
 | If  The workflow’s consumer and producer bindings must support this mode, otherwise the publisher acknowledgments are processed synchronously regardless of this setting. | 
MQTT Connection Details
The Spring Cloud Stream Binder for MQTT uses the following configuration to configure Micro-Integration for MQTT connection.
spring:
  cloud:
    stream:
      bindings:
        input-0:
          destination: # configure MQTT subscribe topic
          binder: mqtt
        output-0:
          destination: # configure solace topic where MQTT events are published   
          binder: solace
mqtt:
  java:
    url: # MQTT Host
    version: # v3 or v5(default is set to v3)
    username: # username to connect to MQTT broker
    password: # password to connect to MQTT broker
    cleanSession: # default is set to true
    connectionTimeout: # default is set to 30
    keepAliveInterval: # default is set to 60
    persistence: # default is memory
    persistenceDirectory: # default is /tmp/mqtt
    automaticReconnect: # default is false
    automaticReconnectDelay: # default is 0
    sessionExpiryInterval: # default is null
    receiveMaximum: # default is null
    maximumPacketSize: # default is null
    topicAliasMaximum: # default is null
    requestResponse: # default is false
    requestProblemInfo: # default is false
    userProperties: # key-value pair
      property-1 : # value
      property-2 : # value
    ssl:
      caFile: # absolute path to file. default is empty
      clientCertificateFile: # absolute path to file. default is empty
      clientKeyFile: # absolute path to file. default is empty
      password: # client key file password if set. default is empty
      sslHostNameVerification: # default is false
    willAndTestament:
      lastWillTopic: # default is null
      lastWillQos: # default is 0
      lastWillRetain: # default is false
      payload: # default is null
      payloadFormatIndicator: # default is false
      willDelayInterval: # default is null
      messageExpiryInterval: # default is null
      contentType: # default is empty
      responseTopic: # default is empty
      correlationData: # default is empty
                                                            MQTT Producer Configuration Options
The following configuration options are all prefixed by spring.cloud.stream.mqtt.bindings.<channelname>.producer. 
If these properties need to be applied by default to all producers, use the spring.cloud.stream.mqtt.default.producer prefix.
| Config Option | Type | Valid Values | Default Value | Description | 
|---|---|---|---|---|
| 
 | 
 | 
 | Randomly generated Universal Unique Identifier ( UUID) | The property to set the client identifier for the producer. | 
| 
 | 
 | 
 | 
 | The property to set the level of the quality of service for the published event. | 
| 
 | 
 | 
 
 | false
 | The property to retain published messages. | 
| 
 
 | 
 
 | 
 
 | 
 
 | The property to use asynchronous publishing. | 
| 
 | 
 | 
 | 
 | For MQTT V5, the list of headers to be included in or excluded from the user properties. To exclude a header, prefix it with  | 
MQTT Consumer Configuration Options
The following configuration options are all prefixed by spring.cloud.stream.mqtt.bindings.<channelname>.consumer. 
If these properties need to be applied by default to all producers, use the spring.cloud.stream.mqtt.default.consumer prefix.
| Config Option | Type | Valid Values | Default Value | Description | 
|---|---|---|---|---|
| 
 | 
 | 
 | Randomly generated Universal Unique Identifier ( | The property to set the client identifier for the producer. | 
| 
 | 
 | 
 | 
 | The property to set the level of the quality of service for the subscribed event. | 
| 
 | 
 | 
 | 
 | The property to convert the size units of the payload to bytes. | 
| 
 | 
 | 
 | 
 | For MQTT V5, the list of headers to be included in or excluded from the user properties. To exclude a header, prefix it with  | 
| 
 | 
 | 
 | 
 | The property to enable dead-letter topics (DLT) for failed consumer messages.
If  | 
| 
 | 
 | 
 | 
 | The name of the DLT. If  | 
Connecting to Multiple Systems
To connect to multiple systems of the same type, use the multiple binder syntax.
For example:
spring:
  cloud:
    stream:
      binders:
      
      # 1st solace binder in this example
      solace1:
        type: solace
        environment: 
          solace: 
            java:
              host: tcp://localhost:55555
      # 2nd solace binder in this example
      solace2: 
        type: solace
        environment: 
          solace:
            java:
              host: tcp://other-host:55555
        # The only mqtt binder
        mqtt1:  
          type: mqtt
          # Add `environment` property map here if you need to customize this binder.
          # But for this example, we'll assume that defaults are used.
        # Required for internal use
        undefined:
          type: undefined
      bindings: 
        input-0:
          destination: <input-destination>
          binder: mqtt1
        output-0:
          destination: <output-destination> 
          binder: solace1 # Reference 1st solace binder
        input-1:
          destination: <input-destination>
          binder: mqtt1 
        output-1:
          destination: <output-destination>
          binder: solace2 # Reference 2st solace binder
                                                            The configuration above defines two binders of type solace and one binder of type mqtt, which are then referenced within the bindings. 
Each binder above is configured independently under spring.cloud.stream.binders.<bindername>.environment..
- 
                                                                        When connecting to multiple systems, all binder configuration must be specified using the multiple binder syntax for all binders. For example, under the spring.cloud.stream.binders.<binder-name>.environment.
- 
                                                                        Do not use single-binder configuration (for example, solace.java.*at the root of yourapplication.yml) while using the multiple binder syntax.