Configuring Connection Details

SolacePubSub+ Connection Details

The Spring Cloud Stream Binder for PubSub+ uses Spring Boot Auto-Configuration for the Solace Java API to configure its session. In the application.yml, this typically is configured as follows:

solace:
  java:
    host: tcp://localhost:55555
    msg-vpn: default
    client-username: default
    client-password: default	

For more information and options to configure the PubSub+ session, see Spring Boot Auto-Configuration for the Solace Java API.

Preventing Message Loss when Publishing to Topic-to-Queue Mappings

If the connector is publishing to a topic that is subscribed to by a queue, messages may be lost if they are rejected. For example, if the queue ingress is shutdown.

To prevent message loss, configure the reject-msg-to-sender-on-discard with the including-when-shutdown flag.

MQTT Connection Details

The Spring Cloud Stream Binder for MQTT uses the following configuration to configure Connector 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: #d efault 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

Connecting to Multiple Systems

To connect to multiple systems of a 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 your application.yml) while using the multiple binder syntax.