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 yourapplication.yml
) while using the multiple binder syntax.