Configuring Connection Details

This section provides instructions for configuring the connection details required to establish communication between the connector and your third-party system.

For information about configuring the connection to the event broker, see Connecting to Your Event Broker.

This connector supports workflows only in the direction of:

  • Solace to Snowflake

The name of the binder for Snowflake is snowflake.

Snowflake Connection Details

Manual Configuration

To manually configure the Snowflake connection details, set the following values in the application.yml file:

snowflake-binder:
  url: <locator>.<region>.snowflakecomputing.com:443
  username: snowflake_user
  role: <role>
  private-key-path: <private-key-path>
  private-key-password: <password>

Where:

  • <role>: Snowflake role, for example: ACCOUNTADMIN, SECURITYADMIN, USERADMIN, SYSADMIN, PUBLIC.

    For more information, see: Create Role and Overview of Access Control in the Snowflake documentation.

  • <private-key-path>: The file protocol path to the private key file, for example, 'file:///C:/Users/admin/Documents/privateKeyPEM.p8'.

    For more information, see Key-pair authentication and key-pair rotation in the Snowflake documentation.

  • <password>: The password for the encrypted private key, if applicable.

Snowflake Binder Configuration Options

These properties must be prefixed with snowflake.

Config Option Type Description

url

string

The Snowflake account URL in the format:

<locator>.<region>.snowflakecomputing.com:443

For instance, for the Snowflake account URL https://nsb82454.us-east-1.snowflakecomputing.com/ the url property would be nsb82454.us-east-1.snowflakecomputing.com:44.

username

string

The user login name for the Snowflake account.

role

string

The role that the user should take while performing ingestion, for example: ACCOUNTADMIN, SECURITYADMIN, USERADMIN, SYSADMIN, PUBLIC.

For more information, see: Create Role and Overview of Access Control in the Snowflake documentation.

private-key-path

string

The file protocol path to the private key to use to authenticate the user, for example, 'file:///C:/Users/admin/Documents/privateKeyPEM.p8'.

Supports both encrypted and unencrypted keys.

For more information, see Key-pair authentication and key-pair rotation in the Snowflake documentation.

private-key-password

string

The password for the encrypted private key, if applicable.

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

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.

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)

NONE

This setting specifies whether 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.

Connecting to Multiple Systems

To connect to multiple systems of the same type, use the Spring Cloud Stream multiple binder syntax.    

For example:

spring:
  cloud:
    stream:

      binders:
        solace1: # 1st solace binder in this example 
          type: solace
          environment: 
            solace: 
              java:
                host: tcp://localhost:55555
        solace2: # 2nd solace binder in this example 
          type: solace
          environment: 
            solace:
              java:
                host: tcp://other-host:55555
        snowflake1: # The only snowflake binder
          type: snowflake
          environment:
            snowflake-binder:
              # Add connection and binder properties here to customize behavior. 
        # Required for internal use
        undefined:
          type: undefined
 
      bindings: 
        input-0:
          destination: <input-destination>
          binder: solace1 # Reference 1st solace binder 
        output-0:
          destination: <output-destination> 
          binder: snowflake1
        input-1:
          destination: <input-destination>
          binder: solace2 # Reference 2nd solace binder 
        output-1:
          destination: <output-destination>
          binder: snowflake1

The configuration above defines two binders of type solace and one binder of type snowflake, 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.