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 filename format, application-{profile}.yml.

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 as described in the Spring Boot’s default locations.

  • If you want to add 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 Sprint 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 do this:

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

Child directories are intended to be used for merging configuration from multiple sources of confiugration properties. For more information and an example of 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 packages many libraries for you to customize functionality. Here are some references to get started:

Snowflake Binder Configuration Options

These properties are to be prefixed with snowflake-binder.

 

Config Option Type Valid Values Default Value Description

url

string

any

""

The Snowflake account URL, usually in the <locator>.<region>.snowflakecomput ing.com:443 form.

username

string

any

""

The user login name for the Snowflake account.

private-key

string

any

""

The private key to authenticate the user. Include only the key, not the header or footer. Currently only supports unencrypted keys.

See Using Key-Pair Authentication and Key-Pair Rotation for more information.

role

string

any

""

The role that the user should take while performing ingestion.

Note that while this property is used for most Snowflake actions, triggering a classic, non-streaming Snowpipe requires the user account to have a default role with an assigned OPERATE or OWNERSHIP privilege on the specified pipe.

warehouse

string

any

""

The warehouse to use when performing non-streaming operations such as object provisioning or standard Snowpipe ingestion. It can be omitted when using SNOWPIPE_STREAMING (default).

ingestion-method

string

(SNOWPIPE|SNOWPIPE_STREAMING)

SNOWPIPE_STREAMING

Specifies for whether to use Snowpipe Streaming or standard Snowpipe to load data from Solace.

The properties in the table above are complementary to the properties described in Configuring Connection Details.

Snowflake Producer Configuration Options

The following configuration options are available to Snowflake producers:

  • To apply a configuration option to all output bindings, prefix it with spring.cloud.stream.snowflake.default.producer.

  • To apply a configuration option to a specific binding, prefix it with spring.cloud.stream.snowflake.bindings.<bindingName>.producer.

 

Config Option Type Valid Values Default Value Description

name

string

any

""

The application's name. This name must be unique across all Solace worfklows used by the customer, and it must be a valid Snowflake unquoted identifier.

database

string

any

""

The name of the database that contains the table to insert rows into. This name can also be specified in the binding destination binding when using a fully-qualified table name in the <database>.<schema>.<table> form.

schema

string

any

""

The name of the schema that contains the table to insert rows into. This name can also be specified in the destination binding when using a fully-qualified table name in the <database>.<schema>.<table> or <schema>.<table> form.

table

string

any

""

The name of the table to insert rows into. This name can also be specified in the destination binding when using a fully-qualified table name in the <database>.<schema>.<table>, <schema>.<table>, or <table> form.

Specifying this name as a default binding setting allows multiple workflows to share the same target table without explicitly declaring the target table.

batch-maxsize

int

> 0

2000

The number of messages to receive before flushing the connector buffer into the Snowflake channel or stage.

batchtimeout

int

> 0

2000

Number of milliseconds to wait for a full buffer before flushing into the Snowflake channel or stage.

acknowledgment-mode

string

(ON_COMMIT|ON_INSERT)

ON_COMMIT

This setting controls when the connector sends acknowledgments to the PubSub+software event broker:

  • If configured for ON_COMMIT, the connector waits until a row has been successfully committed to the target table before sending a message acknowledgment.

  • If configured for ON_INSERT, the acknowledgment is sent as soon as the message has been written to the Snowflake channel or stage.

provisioning-mode.tables

string

(NONE|CREATE|OVERWRITE)

CREATE

This setting specifies if and how the connector should provision the specified target table:

  • If NONE is specified, the connector does not attempt to create the table.

  • If CREATE is specified, the table is created if it does not exist.

  • If OVERWRITE is specified, the table will be created always.

Specifying OVERWRITEmay result in the loss of data and is intended primarily for test and development purposes.

provisioning-mode.stages

string

(NONE|CREATE|OVERWRITE)

CREATE

This setting specifies if and how the connector should provision the underlying stage when using the standard SNOWPIPE ingestion mode: 

  • If NONE is specified, the connector does not attempt to create the stage.

  • If CREATE is specified, the stage is created if it does not exist.

  • If OVERWRITE is specified, the stage will be created always.

Specifying OVERWRITEmay result in the loss of data and is intended primarily for test and development purposes.

provisioning-mode.pipes

string

(NONE|CREATE|OVERWRITE)

CREATE

This setting specifies if and how the connector should provision the underlying pipe when using the standard SNOWPIPE ingestion mode: 

  • If NONE is specified, the connector does not attempt to create the pipe.

  • If CREATE is specified, the pipe is created if it does not exist.

  • If OVERWRITE is specified, the pipe will be created always.

Specifying OVERWRITEmay result in the loss of data and is intended primarily for test and development purposes.

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

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-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.