Connector Configuration

Providing Configuration

For information about about how the connector detects configuration properties, see Spring Boot: Externalized Configuration.

Converting Canonical Spring Property Names to Environment Variables

For information about converting the Spring property names to environment variables, see the Spring documentation.

Spring Profiles

If multiple configuration files exist within the same configuration directory for use in different environments (development, production, etc.), use Spring profiles.

Using Spring profiles allow you to define different application property files under the same directory using the application-{profile}.yml filename format.

For example:

  • application.yml: The properties in non-specific files that always apply. Its properties are overridden by the properties defined in profile-specific files.
  • application-dev.yml: Defines properties specific to the development environment.
  • application-prod.yml: Defines properties specific to the production environment.

Individual profiles can then be enabled by setting the spring.profiles.active property. See Spring Boot: Profile-Specific Files for more information and an example.

Configuring Locations to Find Spring Property Files

By default, the connector detects any Spring property files that are located in Spring Boot’s default locations.

  • If you want to configure additional locations, add --spring.config.additional-location=file:<custom-config-dir>.

  • If you want to exclusively use the locations that you’ve defined and ignore Spring Boot’s default locations, add --spring.config.location=optional:classpath:/,optional:classpath:/config/,file:<custom-config-dir>.

For example of the command to add additional locations, see Quick Start: Running the Connector Using the Command Line.

For more information about configuring locations to find Spring property files, see Spring Boot documentation.

If you want configuration files for multiple different connectors within the same config directory for use in different environments (such as, development, production, etc.), we recommend that you use Spring Boot Profiles instead of child directories.

For example, set up your configuration like this :

  • config/application-prod.yml
  • config/application-dev.yml

Do not set it up like this:

  • config/prod/application.yml
  • config/dev/application.yml

Child directories are intended to be used for merging configuration from multiple sources of configuration properties. For more information and an example showing when you might want to use multiple child directories to compose your application’s configuration, see the Spring Boot documentation.

Obtaining Build Information

Build information that includes the version, build date, time, and description is enabled by default using the Spring Boot Actuator Info Endpoint. By default, a connector only shares information related to its build.

The following example shows the structure of the output data:

{
"build": {
"version": "<connector version>",
"artifact": "<connector artifact>",
"name": "<connector name>",
"time": "<connector build time>",
"group": "<connector group>",
"description": "<connector description>",
"support": "<support information>"
}
}

If you want to exclude build data from the output of the info endpoint, set management.info.build.enabled to false.

Alternatively, if you want to disable the info endpoint entirely, you can remove info from the list of endpoints specified in management.endpoints.web.exposure.include.

Spring Configuration Options

This connector uses Spring configuration options to customize functionality that includes Spring Cloud Binder for Solace PubSub+ and other common Spring Boot libraries.

Using the Spring Cloud Binder for Solace PubSub+

An important piece for customizing the Spring configuration options for Self-Managed Connectors is the Spring Cloud Binder for Solace PubSub+. There are configuration options available that you may find useful to configure the connector such as:

  • endpointType, which is a consumer configuration option to configure the type of endpoint (queue or topic endpoint) that consumers read messages from

  • selector, which is a consumer configuration option to configure an endpoint's message selector

  • producer configuration options to publish messages within transacted sessions

  • authentication schemes to connect to a PubSub+ event broker, such as basic authentication (default) , client certificate, or OAuth 2.0

For more information about:

Using Other Spring Boot Libraries

The following are other common references to Spring Boot libraries that you can use to configure your connector that you may find useful:

Amazon SQS Binder Configuration Options

The following properties are available at the Amazon SQS binder level.

These properties are to be prefixed with spring.cloud.stream.sqs.bindings.<function name>.consumer. For more information, see SQS Binder configuration.

 

Config Option Type Valid Values Default Value Description

maxMessagesPerPoll

int

1-10

10

The number of messages that are returned per poll.

visibilityTimeout int > 0 30

The duration (in seconds) that polled messages are hidden from subsequent poll requests after having been retrieved.

pollTimeout

int

1-20

10

The duration (in seconds) that the system waits for new messages to arrive when polling.

listenerShutdownTimeout

int

> 0

10

The number of seconds that the listener is given to gracefully finish its work on shutdown before interrupting the current thread.

snsFanout

boolean

trueor false

false

It enables the automatic deserialization of incoming SNS-formatted messages. By default, SNS messages are delivered in JSON-format, encapsulating both the message content and various metadata, such as the message ID, timestamp, and the topic ARN.

Enabling snsFanout allows this connector to automatically parse the JSON structure for extracting and separating the payload message from the metadata. This functionality is particularly beneficial for applications that consume messages from SNS topics that are forwarded to SQS queues because it streamlines the handling of such messages.

consumer.concurrency

int

> 0

1

The number of concurrent threads to launch. By specifying a value, you launch concurrent threads that continuously poll for the maxMessagesPerPoll per thread. Threads asynchronously process all messages. Each thread must complete the processing of its batch of messages prior to retrieving more messages. If the duration for message processing is highly variable from message to message, we recommend to set a lower value for the maxMessagesPerPoll, and a higher value for consumer.concurrency.

Using this parameter increases the number of API calls made to the Amazon SQS queue, which may increase the its cost. For more information, see Amazon SQS Pricing.

Only set snsFanOut to true (enable) if all incoming messages are SNS-formatted messages. If you set snsFanout property to true, the connector deserializes every incoming message as an SNS-formatted message, but if there are messages that are not SNS-formatted, failures occur.

FIFO SQS Queues

To use  FIFO (First-In-First-Out) SQS queues, you must provide a group ID and a deduplication ID (though you can choose not to set it). With this binder, you can set the message headers, message_groupId and message_deduplicationId. For more information about FIFO queues, see FIFO queues.

Header Name Type Applies To Description
sqs_groupId string Amazon SQS The identifier for a distinct ordered message group within an Amazon SQS queue. This identifier ensures that messages within the group are processed in the same order that they are sent. This parameter must be set and if not provided, Amazon SQS rejects the message with an error.
sqs_deduplicationId string Amazon SQS

A token used for deduplication of sent messages. When set, messages with the same deduplication identifier are not sent within a five-minute interval. If this parameter is not set: 

  • For releases 1.2.3 and later; the PubSub+ replication group ID (solace_replicationGroupMessageId) is used as the deduplication identifier
  • For releases earlier than 1.2.3, the value remains unset.

Connector Configuration Options

The following table lists the configuration options. The following options in Config Option are prefixed with solace.connector.:

Config Option Type Valid Values Default Value Description

management.leader-
election.fail-over.max-attempts

int

> 0

3

The maximum number of attempts to perform a fail-over.

management.leader-
election.fail-over.back-off-initial-interval

long

> 0

1000

The initial interval (milliseconds) to back-off when retrying a fail-over.

management.leader-
election.fail-over.back-off-max-interval

long

> 0

10000

The maximum interval (milliseconds) to back-off when retrying a fail-over.

management.leader-
election.fail-over.back-off-multiplier

double

>= 1.0

2.0

The multiplier to apply to the back-off interval between each retry of a fail-over.

management.leader-election.mode

enum

(standalone | active_active | active_standby)

standalone

The connector’s leader election mode.

standalone: A single instance of a connector without any leader election capabilities.

active_active: A participant in a cluster of connector instances where all instances are active.

active_standby: A participant in a cluster of connector instances where only one instance is active (i.e. the leader), and the others are standby.

management.queue

string

any

null

The management queue name.

management.session.*

See Spring Boot Auto-Configuration for the Solace Java API

Defines the management session. This has the same interface as that used by solace.java.*.

See Spring Boot Auto-Configuration for the Solace Java API for more information.

security.enabled

boolean

(true | false)

true

Indicates whether security is enabled on the endpoints for the connector. When true, security is enable, otherwise, anyone has access to the connector’s endpoints.

security.users[<index>].name

string

any

null

The name of the user.

security.users[<index>].password

string

any

null

The password for the user.

security.users[<index>].roles

list<string>

admin

empty list (i.e., read-only)

The list of roles that the specified user has. It has read-only access if no roles are returned.

Workflow Configuration Options

These configuration 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

enabled

Per-Workflow

boolean

(true | false)

false

If true, the workflow is enabled.

transform-headers.expressions

Per-Workflow Default

Map<string, string>

Key: A header name.

Value: A SpEL string that accepts headers as parameters.

empty map

A mapping of header names to header value SpEL expressions.

The SpEL context contains the headers parameter that can be used to read the input message’s headers.

acknowledgment.publish-async

Per-Workflow Default

boolean

(true | false)

false

If true, publisher acknowledgment processing is done asynchronously.

The workflow’s consumer and producer bindings must support this mode, otherwise the publisher acknowledgments are processed synchronously regardless of this setting.

acknowledgment.back-pressure-threshold

Per-Workflow Default

int

>= 1

255

The maximum number of outstanding messages with unresolved acknowledgments.

Message consumption is paused when the threshold is reached to allow for producer acknowledgments to catch up.

acknowledgment.publish-timeout

Per-Workflow Default

int

>= -1

600000

The maximum amount of time (in milliseconds) to wait for asynchronous publisher acknowledgments before considering a message as failed. A value of -1 means to wait indefinitely for publisher acknowledgments.