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 an 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:

Configuration Option Type Valid Values Default Value Description

username

String

Any

None

The username to use to log in.

password

String

Any

None

The password to use for login, if you are using password authentication. If you don't specify a password, you must use a private key file.

privateKeyFile

String

 

None

The private key file for the SFTP endpoint to use for private key verification.

privateKeyPassphrase

String

Any

None

The private key file passphrase for the SFTP endpoint to use for private key verification.

passiveMode

boolean

(true | false)

false

Indicates whether to use passive mode connections. The default (false) is active mode connections.

knownHostsFile

String

 

None

The known_hosts file for the SFTP endpoint to use for host key verification.

You can create a known_hosts file using the following command:

ssh-keyscan -H <host> -P <port>  >> known_hosts.

For example:

 ssh-keyscan -H myftpserver -p 22  >> known_hosts

strictHostKeyChecking

String

(yes | no)

no

Indicates whether to use strict host key checking. The default (no) is not to use strict host key checking.

autoCreateKnownHostsFile

boolean

(true | false)

false

Indicates whether the known_hosts file should be created automatically if it does not exist. The default (false) is not to create the file automatically.

ciphers

String

None

A comma-separated list of ciphers to use, listed in order of preference. Possible cipher names are defined by JCraft Java Secure Channel (JSch). Some examples include aes128-ctr, aes128-cbc, 3des-ctr, 3des-cbc, blowfish-cbc, aes192-cbc, and aes256-cbc.

keyExchangeProtocols

String

None

A comma-separated list of key exchange protocols to use, listed in order of preference. Possible cipher names are defined by JCraft JSch. Some examples include: diffie-hellman-group-exchange-sha1, diffie-hellman-group1-sha1, diffie-hellman-group14-sha1, diffie-hellman-group-exchange-sha256, ecdh-sha2-nistp256, ecdh-sha2-nistp384, and ecdh-sha2-nistp521.

publicKeyAcceptedAlgorithms

String

None

A comma-separated list of accepted public key algorithms. Some examples include ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, and ecdsa-sha2-nistp521.

serverHostKeys

String

None

A comma-separated list of algorithms supported for the server host key. Some examples include: ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, and ecdsa-sha2-nistp521.

connectTimeout

int

> 0

10000

The time in milliseconds to wait for a connection to be established.

soTimeout

int

> 0

300000

The socket timeout, in milliseconds.

maximumReconnectAttempts

int

>= 0

None

The maximum number of times to retry to establish an initial connection to the remote FTP server. Use 0 to disable this behavior.

reconnectDelay

long

> 0

1000

The delay in milliseconds to wait before retrying the connection.

serverAliveCountMax

int

> 0

1

The maximum number of keep-alive messages to send without receiving any messages back from the server. If this threshold is reached while keep-alive messages are being sent, the connection is closed.

serverAliveInterval

int

>= 0

0

The interval (in milliseconds) between keep-alive messages. If zero is specified, no keep-alive messages are sent.

binary

boolean

(true | false)

false

The file transfer mode, either binary or ASCII. The default (false) is ASCII.

charset

String

A valid charset value.

None

The character encoding of the file contents, for example utf-8.

fileExist

String

(Override | Append | Fail)

Override

The action to take if a file with the same name already exists:

  • Override: replaces the existing file.

  • Append: adds content to the existing file.

  • Fail: throws an exception indicating that there is already an existing file.

fileName

String

Any valid filename.

None

The filename to write to. It can include the leading file path. For example:

 sub1/sub2/employee.csv

If the filename is not set, a randomly generated UUID is used, in which case each event is written to a unique file.

The fileName can be specified using a Camel Simple Language expression, for example:

fileName: "backup/$#{date:now:yyyyMMdd}/test.txt"

chmod

String

Unix chmod value, for example, 740

None

The permissions (mode) to set on the file.

chmodDirectory

String

Unix chmod value, for example, 740

None

The permissions (mode) to set on the directory.

preventDuplicates

boolean

(true | false)

false

Indicates whether to prevent duplicate events from being written to the target file. Duplicate events are identified based on the value of the uniqueIdentifierHeader option. The default (false) is not to prevent duplicates.

preventDuplicatesOnlyForRedeliveredEvents

boolean

(true | false)

true

Indicates whether to check for duplicates only on redelivery. The default (true) is to check for duplicates for redelivered events only. If false, duplicate checking is performed for all events.

Use this option only when preventDuplicates is set to true.

uniqueIdentifierHeader

String

Any valid header name

eventId

The user property or header name to be used for uniquely identifying events.

Use this option only when preventDuplicates is set to true.

cacheSize

int

> 0

260

The size of the in-memory cache used to store event unique identifiers.

Use this option only when preventDuplicates is set to true.

maxEventsPerFile

Long

>= 0

0 (unlimited)

The maximum number of events to be written to a file. If the value is 0, then there is no limit.

maxFileSize

Long

>= 0

0 (unlimited)

The maximum size of the file in bytes. If the value is 0, then there is no limit.

prependToEvent

String

Any valid string

Empty string

The string to be prepended to the event.

appendToEvent

String

Any valid string

\n (newline)

The string to be appended to the event.

prependToFile

String

Any valid string

Empty string

The string to be prepended to the file (for example, a header line). This is done only once when the file is created.

prependToFirstEvent

String

Any valid string

Empty string

The string to be prepended to the first event.

serverMessageLoggingLevel

String

Enum values: TRACE, DEBUG, INFO, WARN, ERROR, OFF

DEBUG

Logging levels control how much information is saved to the log file. During troubleshooting, it may be useful to raise the logging level to increase the amount of information the logs receive from the FTP server.

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 for more information.

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

security.enabled

boolean

(true | false)

true

If true, security is enabled. 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.enabled

Per-Workflow

Default

boolean

(true | false)

false

If true, message transformation is enabled for the workflow.

Disables the legacy transform-headers.* and transform-payload.* options. For more information, see Mapping Message Headers and Payloads.

transform.​source-payload.​content-type

Per-Workflow

Default

string

One of:

  • application/​vnd.solace.​micro-integration.​unspecified

  • application/json

application/​vnd.solace.​micro-integration.​unspecified

The content type to interpret the source payload as.

See Content Type Interpretation for more info.

transform.​target-payload.​content-type

Per-Workflow

Default

string

One of:

  • application/​vnd.solace.​micro-integration.​unspecified

  • application/json

application/​vnd.solace.​micro-integration.​unspecified

The content type to interpret the target payload as.

See Content Type Interpretation for more info.

transform.​expressions[<index>].​transform

Per-Workflow

Default

string

An expression

-

An expression at some <index> in the ordered list of expressions to transform the message.

For more information, see Mapping Message Headers and Payloads.

transform-headers.expressions

This feature is deprecated and will be removed in a future release. Use the configuration described in Mapping Message Headers and Payloads instead.

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.

transform-payloads.expressions[0].transform

This feature is deprecated and will be removed in a future release. Use the configuration described in Mapping Message Headers and Payloads instead.

Per-Workflow

Default

String

An expression

-

A SPeL expression defining a payload transformation.

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.