TIBCO eFTL Subscribe Input Adapter

Introduction

The TIBCO StreamBase® Subscribe Adapter for TIBCO eFTL® allows a StreamBase application to receive eFTL messages.

TIBCO Middleware Dependencies

This adapter requires access to the JAR file that implements the TIBCO eFTL Java API on your system, and any files referenced by that JAR file. The adapter has been tested with eFTL version 3.4.0, though it will likely work with newer FTL API versions as well. To make the TIBCO FTL Java API available to the adapter, you must supply a maven dependency for it. The eFTL sample comes with a launch config tibeftl jar maven install to repo.launch which will install the tibeftl.jar into your local maven repository. Run the launch config, and respond to the prompt for both the location of tibeftl.jar and the version number it represents by right clicking tibeftl jar maven install to repo.launch and performing the Run As command.

Properties

This section describes the properties you can set for this adapter, using the various tabs of the Properties view in StreamBase Studio.

General Tab

Name: Use this required field to specify or change the name of this instance of this component, which must be unique in the current EventFlow module. The name must contain only alphabetic characters, numbers, and underscores, and no hyphens or other special characters. The first character must be alphabetic or an underscore.

Operator: A read-only field that shows the formal name of the operator.

Class name: Shows the fully qualified class name that implements the functionality of this adapter. If you need to reference this class name elsewhere in your application, you can right-click this field and select Copy from the context menu to place the full class name in the system clipboard.

Start options: This field provides a link to the Cluster Aware tab, where you configure the conditions under which this adapter starts.

Enable Error Output Port: Select this check box to add an Error Port to this component. In the EventFlow canvas, the Error Port shows as a red output port, always the last port for the component. See Using Error Ports to learn about Error Ports.

Description: Optionally enter text to briefly describe the component's purpose and function. In the EventFlow Editor canvas, you can see the description by pressing Ctrl while the component's tooltip is displayed.

Operator Properties Tab

Property Description
Connection Adapter Optional, the TIBCO eFTL Connection Adapter to use which will supply the actual eFTL connection for this adapter to use. This field must be the full module path to the connection adapter or if the connection adapter is in the same module it can be just the adapter instance name. If this field has a value then this adapter connection fields will be disabled and the control port will not accept connect/disconnect commands. Also, the status port will not emit connect/disconnect messages.
URL The URL to connect to.
Client Id The client ID to set when connecting to the eFTL endpoint. A client ID is a unique identifier for each eFTL client. No two eFTL clients can connect at the same time with the same identifier. The provided identifier is optional, but for an eFTL client to receive messages that it might have missed while it was disconnected, you must specify the identifier.
Unique Id If the check box is enabled, a random UUID is appended to the end of the given client ID. For example, if you enter StreamBase as the Client ID with the Unique Id enabled, the actual client ID sent to server will be similar to StreamBase8747bcdd-a6b5-4762-bb44-4811cf86033c.
Authentication Key The authentication key to use when connecting to the eFTL endpoint.
Username Use this property to supply a user name credential to the connect call if the user name is not specified with the URL. The server authenticates the user name and password. This field is not required if using an app authentication key.
Matcher The default matcher to use when subscribing. If the control port is not enabled this field must have a value. An empty matchers are ignored.
Durable Name The durable name is a unique name given to a subscription. It is how the eFTL client receives stored messages while it is disconnected. It is also important that the eFTL client connects with the same client identifier.
Durable Type Use this optional property to supply a durable type to the subscribe call. Available Options are:
  • None — No durability

  • Shared — Multiple cooperating subscribers can use the same shared durable to each receive a portion of the subscription's messages.

  • Last Value — A last-value durable subscription stores only the most recent message for each unique value of the durable key

Durable Key Use this property to supply a key field to the subscribe call when the Durable Type is of type Last Value.
Store Local Message Id Field Name The field name for store local message id in the output tuple. If not specified, the id will not be included. eFTL prior to 6.5.0 will allows return a zero value.
Connect On Startup If enabled, the system tries to connect to the URL endpoint on startup. If the Matcher field is not blank, a subscription is created when the connection is established.
Enable Control Port If enabled, the control port allows you to send commands to the operator.
Enable Status Port If enabled, a status port becomes available to emit status tuples for various events of this adapter.
Log Level Controls the level of verbosity the adapter uses to send notifications to the console. This setting can be higher than the containing application's log level. If set lower, the system log level is used. Available values, in increasing order of verbosity, are: OFF, ERROR, WARN, INFO, DEBUG, TRACE.

Advanced Tab

The advanced tab contains advanced connection options.

Property Description
Connection Timeout Programs use this property to supply a timeout when connecting. If the connection cannot be made to the server within this time limit (in seconds), it stops trying to connect.
Auto Reconnect Attempts Use this property to define the maximum number of times an attempt to autoreconnect to the server is made.
Auto Reconnect Max Delay Use this property to define the maximum delay between autoreconnect attempts. Following the loss of connection, the autoreconnect process delays for 1 second before attempting to autoreconnect. Subsequent attempts double this delay time, up to the maximum defined by this property.
Notification Token Programs use this property to supply a GCM registration token. The server uses the registration token to push notifications to a disconnected client when messages are available.
Trust Store The full path to the Trust Store file to use with the connection. If empty the default trust store is used.
Trust Store Password The password to use with the Trust Store.

Edit Schema Tab

The schema lets you set up the fields that will be pulled from the eFTL messages. It is not required to provide all fields that may be in a message. The system matches fields by name and only converts data for fields specified in the schema; other fields in the eFTL message are ignored. If you subscribe to two subscriptions with different message formats, you can create a superset schema to be able to handle both subscriptions on a single adapter, if required (although using separate adapters for each is a preferred method).

Cluster Aware Tab

Use the settings in this tab to allow this operator or adapter to start and stop based on conditions that occur at runtime in a cluster with more than one node. During initial development of the fragment that contains this operator or adapter, and for maximum compatibility with TIBCO Streaming releases before 10.5.0, leave the Cluster start policy control in its default setting, Start with module.

Cluster awareness is an advanced topic that requires an understanding of StreamBase Runtime architecture features, including clusters, quorums, availability zones, and partitions. See Cluster Awareness Tab Settings on the Using Cluster Awareness page for instructions on configuring this tab.

Concurrency Tab

Use the Concurrency tab to specify parallel regions for this instance of this component, or multiplicity options, or both. The Concurrency tab settings are described in Concurrency Options, and dispatch styles are described in Dispatch Styles.

Caution

Concurrency settings are not suitable for every application, and using these settings requires a thorough analysis of your application. For details, see Execution Order and Concurrency, which includes important guidelines for using the concurrency options.

Data Type Conversion

This section describes how data is converted from a tuple into eFTL Data objects and back again.

eFTL to Tuple

This section describes how data is converted from eFTL Data objects into a tuple result. Note that the best data conversion option is highlighted.

If the StreamBase data type is not correct, the field will not be converted and will be left null.

Note

eFTL does current not support Boolean or int. For these data types, a best effort is done to convert from long values.

eFTL Data Type StreamBase Field Types
eFTL Opaque
  • Blob

eFTL Long
  • Boolean — eFTL will translate as 1 is true, else false

  • Int

  • Long

eFTL Long Array
  • list<Boolean> — eFTL will translate as 1 is true, else false

  • list<Int>

  • list<Long>

eFTL Double
  • Double

eFTL Double Array
  • list<Double>

eFTL String
  • String

eFTL String Array
  • list<String>

eFTL Date
  • Timestamp

eFTL Date Array
  • list<Timestamp>

eFTL Message
  • Tuple

eFTL Message Array
  • list<Tuple>

Tuple to eFTL

This section describes how data is converted from a tuple into eFTL Data objects.

Note

eFTL does current not support Boolean or int. For these data types, a best effort is done to convert to long values.

StreamBase Field Type eFTL Data Types
Blob eFTL Opaque
Boolean eFTL Long
list<Boolean> eFTL Long Array
Int eFTL Long
list<Int> eFTL Long Array
Long eFTL Long
list<Long> eFTL Long Array
Double eFTL Double
list<Double> eFTL Double Array
String eFTL String
list<String> eFTL String Array
Timestamp eFTL Date
list<Timestamp> eFTL Date Array
Tuple eFTL Message
list<Tuple> eFTL Message Array
list of list Not supported and will result in a null field
Function Not supported and will result in a null field.
Capture Field Not supported and will result in a null field.

Control Input Port

Commands

See the Required Schema for field definitions.

Command Description
Subscribe Use this command to create a new subscription. This command requires a value in the matcher field and optionally a value for the durableName field. Subscribe will fail when not connected to the server.
Unsubscribe Use this command to unsubscribe from an existing connection. This command requires a value in the subscriptionId field. Unsubscribe will fail when not connected to the server.
Connect Use this command to connect to the server. If the matcher and/or the durable name fields are not null (but not blank) then a new subscription is created after the connection is established. If the matcher field is null, then the default matcher is used from the adapter properties. If that value is also blank then no subscription is created after a connection is established.
Disconnect Use this command to disconnect from the server.

Required Schema

Field Type Description
command String The command to execute via the operator.
url String The optional URL to connect to. If this value is null, the default URL from the adapter properties is used.
clientId String The Client ID to use when connecting. If this value is null, the default Client Id from the adapter properties is used.
authenticationKey String The Authentication Key to use when connecting. If this value is null the default Authentication Key from the adapters properties is used.
username String The user name to use when connecting. If this value is null the default Username from the adapters properties is used.
matcher String The matcher to use when subscribing. If this value is null, the current subscriptions will be resubscribed if previously connected, if not the default Matcher from the adapter properties is used. This value is used during the connect command as well as the subscribe command. If you do not want to subscribe directly after a connection, then pass a blank string value in for this field. If the default and the matcher field are blank this subscribe is ignored.
durableName String The Durable Name to use when subscribing. If this value is null, the default Durable Name from the adapters properties is used. This value is used during the connect command as well as the subscribe command. If you do not want to subscribe directly after a connection, then pass a blank string value in for this field.
durableType String The durable type to the subscribe call. Available Options are:
  • null or empty string — No durability.

  • shared — Multiple cooperating subscribers can use the same shared durable to each receive a portion of the subscription's messages.

  • last-value — A last-value durable subscription stores only the most recent message for each unique value of the durable key.

If this value is null, the default Durable Type from the adapters properties is used.
durableKey String Supply a key field to the subscribe call when the Durable Type is of type last-value. If this value is null, the default Durable Key from the adapters properties is used.
subscriptionId String The ID of the subscription to unsubscribe from. This value is used with the unsubscribe command. When a new subscription is created, a status message is output with the subscription ID as the object field of the status port.

Data Output Port

The data output port will output eFTL messages for any subscriptions as they arrive. The adapter's Schema property defines the port's schema.

Status Output Port

The status output port will output tuples for the current configuration, giving relevant information about the connection.

The schema for the status output port is:

Field Name Field Type Description
type String The type of report, which follows normal log levels Debug, Error, Info, Trace, Warn.
action String Refer to the Actions column in the next table.
object String An option object that has been affected by this status.
message String A human-readable message about the status.
time timestamp The timestamp that the status occurred.

The following is a list of status outputs and the associated objects:

Action object Description
Connect code This type of message is output when something wrong occurred during the connect on startup.
Connected URL The connect message informs that the system successfully connected to the endpoint.
Disconnected code The system disconnected properly.
Disconnect code The system disconnected for the reason given in the message field.
Reconnect URL The reconnect message informs that the system automatically reconnected successfully.
Control   This type of message is output when a tuple input into the control port is invalid.
Subscribe code This type of message is output if this is a problem subscribing.
Subscribed subscriptionId This type of message is output when a subscription is successful. The message outputs the subscriptionId as the object to track for unsubscribe calls.
Unsubscribe subscriptionId This type of message is output if there is a problem unsubscribing.
Unsubscribed subscriptionId This type of message is output when a subscription is successful removed. The message outputs the subscriptionId that was removed.

Suspend and Resume Behavior

When suspended, the TIBCO eFTL Subscribe Adapter disconnects from the server and stops processing incoming eFTL messages.

When resumed, the adapter reconnects to the server — if it had been connected before being suspended — and resumes processing incoming eFTL messages.