TIBCO Rendezvouz Transport Adaptor

Overview

The Tibco Rendezvouz Transport Adaptor (hereinafter TibcoTA) is intended for communication between FixEdge and third-party applications using the Tibco Rendezvouz protocol.

Installation

TibcoTA is distributed as a zip-archive named TibcoAdaptor-xxxx.zip, where xxxx stands for TibcoTA version. 

To install TibcoTA, unpack the .zip file and copy TibcoAddin.dll file to FixEdge \bin folder. Also tibrv.dll, tibrvcm.dll, tibrvft.dll should be added in PATH (or in bin directory).

Several instances of TibcoTA can be created without copying the shared library since FIXEdge C++ 6.14.0.

You can find detailed information about configuring TibcoTA in the Configuration section.

After TibcoTA is configured FixEdge has to be started.

Configuration

TibcoTA is configured using the following properties:

Property name

Description

TransportLayer.Tibco.DllName

Contains path and name of TibcoTA dll. In case this parameter is not specified, the TransportLayer.Tibco.AdapterId is applied to define the adapter's library by ID.

The property is required.

Several instances of TibcoTA can be created using the same shared library since FIXEdge C++ 6.14.0.

TransportLayer.Tibco.AdapterId

The parameter to define the adapter's library by ID. In case this parameter is not specified, or TransportLayer.Tibco.DllName parameter is specified too, the TransportLayer.Tibco.DllName is applied.

This parameter is applicable since FIXEdge C++  6.14.0

Required value: TIBCO.

TransportLayer.Tibco.Description

Name of adaptor. The property is required.

TransportLayer.Tibco.Type

Type of the adaptor library, contains 'DLL' value. The property is required.

TransportLayer.Tibco.Default.FieldName

Default TIBCO message field name, where FIX message is stored.

TransportLayer.Tibco.Default.ErrorFieldName

Default TIBCO message field name, where error message is stored.

TransportLayer.Tibco.Default.TransportType

Default transport type for connections.

TransportLayer.Tibco.Default.Service

Default service for connections.

TransportLayer.Tibco.Default.Daemon

Default daemon for connections. Format of the value is '<host>:<port>'.

TransportLayer.Tibco.Default.CMTransportName

Default name of CMTransport for connections.

TransportLayer.Tibco.Default.CMTransportRequestOld

Default value of RequestOld flag value in CMTransport for connections.

TransportLayer.Tibco.Default.CMTransportLedgerName

Default ledger name of CMTransport for connections.

TransportLayer.Tibco.Default.CMTransportSyncLedger

Default SyncLedger flag value of CMTransport for connections.

TransportLayer.Tibco.Default.CMTransportNetwork

Default network of CMTransport for connections.

TransportLayer.Tibco.Default.CMTransportReceiverName

Default CMTransport receiver name for connections. Used to allow message delivery to clients, which are not registered as receivers at the moment of sending a message. 

TransportLayer.Tibco.Clients

Comma separated list of Client names.

TransportLayer.Tibco.<CLIENT>.InSubject

Subject for receiving Tibco Messages from.

TransportLayer.Tibco.<CLIENT>.OutSubject

Subject for sending Tibco Messages to.

TransportLayer.Tibco.<CLIENT>.ErrorSubject

Subject for sending Error messages (failures of TibcoTA) to.

TransportLayer.Tibco.<CLIENT>.UnroutedSubject

Subject for sending unrouted messages (Transport Layer is unable to find the receiver of message) to.

TransportLayer.Tibco.<CLIENT>.<SUBJECT> .Name

Subject name specified for current connection. The property is required.

TransportLayer.Tibco.<CLIENT>.<SUBJECT> .FieldName

TIBCO message field name, where FIX message is stored .
If empty string is specified (or omitted) - Default.FieldName is used.

TransportLayer.Tibco.<CLIENT>.<SUBJECT> .ErrorFieldName

TIBCO message field name, where error description is stored.
If empty string is specified (or omitted) - Default.ErrroFieldName is used.

TransportLayer.Tibco.<CLIENT>.<SUBJECT> .TransportType

Type of transport for Subject (general Net Transport (NetTransport) or Certified Message Delivery Transport (CMTransport))
If empty string is specified (or omitted) - Default.TransportType is used.

TransportLayer.Tibco.<CLIENT>.<SUBJECT> .Service

The service may be specified in one of the following ways :

  • Service name (the transport creation function callsgetservbyname(), which searches a network database (such as NIS) or a flat file (such as services in the system directory)).
  • Port number (must be a string representing a decimal integer (for example, "7890")).
  • Empty string is specified (or omitted) - Default.Service is used.

TransportLayer.Tibco.<CLIENT>.<SUBJECT> .Network

Consists of up to three parts, separated by semicolons — network, multicast groups, send address.
The network may be specified as:

  • Host name - When host name is specified, the transport creation function calls gethostbyname(), which searches a network database to obtain the IP address.
  • Host IP address - When IP address is specified, it must be a string representing a multi-part address. For example: "101.120.115.111"
  • Network name (where supported) - When network name is specified, the transport creation function callsgetnetbyname(), which searches a network database such as Network Information Services (NIS) or a flat file (such as networks) in the system directory.
  • Network IP number - When IP address or a network IP number is specified, it must be in dotted-decimal notation. For example, 101.55.31.
  • Interface name (where supported) - When interface name is specified, the transport creation function searches the interface table for the specified interface name (For example, lan0). The interface name must be familiar to ifconfig ornetstat.


If empty string is specified as network, transport creation function uses the default network interface:

  • TRDP daemons use the network interface which corresponds to the host name of the system as determined by the C function gethostname().
  • PGM daemons use the default PGM multicast interface, 224.0.1.78.

If network is omitted, the Default.CMTransportNetwork is used.

Multicast Groups :
A list of zero or more multicast groups to join, specified as IP addresses, separated by commas. Each address in part two must denote a valid multicast address. Joining a multicast group enables listeners on the resulting transport to receive data sent to that multicast group.

Send Address :
When a program sends multicast data on the resulting transport, it is sent to this address. (Point-to-point data is not affected.) If present, this item must be an IP address — not a host name or network name. The send address must not be included in the list of multicast groups joined in part two. If you join one or more multicast groups in part two, but do not specify a send address in part three, the send address defaults to the first multicast group listed in part two.

TransportLayer.Tibco.<CLIENT>.<SUBJECT> .Daemon

Daemonhostandportin<host>:<port> format.
If empty string is specified (or omitted) - Default.Daemon is used

TransportLayer.Tibco.<CLIENT>.<SUBJECT> .CMTransportName

If transport is Certified Message Delivery.
Name of the new CMTransport, representing a persistent correspondence. The name must conform to the syntax rules for Rendezvous subject names.
If empty string is specified, the CMTransport generates a unique, non-reusable name for the duration of the transport.
If it is omitted, the Default.CMTransportName is used.

TransportLayer.Tibco.<CLIENT>.<SUBJECT> .CMTransport RequestOld

If transport is Certified Message Delivery.
This parameter indicates whether a persistent correspondence requires delivery of messages sent to a previous certified delivery transport with the same name, for which delivery was not confirmed. Its value affects the behavior of other CM sending transports. 
If the value is set to TRUE and SUBJ.Transport.Name is not NULL, the new CMTransport requires certified senders to retain unacknowledged messages sent to this persistent correspondent. When the newCMTransport begins listening to the appropriate subjects, the senders can complete delivery.
If the value is set to FALSE, the new CMTransport does not require certified senders to retain unacknowledged messages. Certified senders may delete those messages from their ledgers. 
If the property is omitted or empty string is specified,Default.CMTransportRequestOld is used.

TransportLayer.Tibco.<CLIENT>.<SUBJECT> .CMTransportL edgerName

If transport is Certified Message Delivery. 
If this argument is not NULL, the new CMTransport uses a file-based ledger. The argument must represent a valid file name. Actual locations correspondent to relative file names conform to operating system conventions. It is strongly recommended not to use empty string as the ledger file name. 
If empty string is used, the new CMTransport uses a process-based ledger. 
If the property is omitted, Default.CMTransportLedgerName is used.  

TransportLayer.Tibco.<CONN>.<SUBJECT> .CMTransport SyncLedger

If transport is Certified Message Delivery.
If the value is set to TRUE, operations that update the ledger file do not return until changes are written to the storage medium. 
If the value is set to FALSE, the operating system writes changes to the storage medium asynchronously. 
If the property is omitted or empty string is specified,Default.CMTransportSyncLedger is used. 

TransportLayer.Tibco.<CONN>.<SUBJECT>.CMTransportReceiverName

If transport is Certified Message Delivery.And subject type isOutSubject.
Receiving CMTransport name.
Used to allow message delivery to clients, which are not registered as receivers at the moment of sending a message.  
If it is omitted or empty string is specified, Default.CMTransportReceiverName is used. 

Note that all changes in the properties file are applied only after FixEdge restart.

To integrate TibcoTA into the FixEdge, the following steps have to be executed:

  1. Open FixEdge properties file (FIXEdge.properties by default).
  2. Find 'TransportLayer.TransportAdapters' property.
    - Add 'TransportLayer.TransportAdapters' property in case it does not exist.
  3. Set 'TransportLayer.TibcoAdaptorDLL' to the value of 'TransportLayer.TransportAdapters' property:

    TransportLayer.TransportAdapters = TransportLayer.TibcoAdaptorDLL

    - If 'TransportLayer.TransportAdapters' property already has the value - append ',TransportLayer.TibcoAdaptorDLL' to the value:

    TransportLayer.TransportAdapters = ...,TransportLayer.SXSAdaptorDLL,TransportLayer.TibcoAdaptorDLL
  4. Add 'TransportLayer.TibcoAdaptorDLL.Description' property with the value - TibcoTA adaptor name:

    TransportLayer.TibcoAdaptorDLL.Description = Tibco Transport Adaptor DLL
  5. Add 'TransportLayer.TibcoAdaptorDLL.DllName ' property with the value - path to TibcoTA dll:

    TransportLayer.TibcoAdaptorDLL.DllName = bin/TibcoAddinDll_8.dll
  6. Add 'TransportLayer.TibcoAdaptorDLL.Type' property with 'DLL' value:

    TransportLayer.TibcoAdaptorDLL.Type = DLL
  7. Add default values for TibcoTA properties. For example :

    TransportLayer.Tibco.Default.FieldName = FIX_MSG
    TransportLayer.Tibco.Default.ErrorFieldName = ERROR_MSG
    TransportLayer.Tibco.Default.TransportType = NetTransport
    TransportLayer.Tibco.Default.Service = 7777
    TransportLayer.Tibco.Default.Network = 10.17.14.170
    TransportLayer.Tibco.Default.Daemon = 10.17.14.170:7500
    TransportLayer.Tibco.Default.CMTransportName = CMTransport
    TransportLayer.Tibco.Default.CMTransportRequestOld = false
    TransportLayer.Tibco.Default.CMTransportLedgerName = ledger
    TransportLayer.Tibco.Default.CMTransportSyncLedger = false
    TransportLayer.Tibco.Default.CMTransportNetwork = true
    TransportLayer.Tibco.Default.CMTransportReceiverName = CMTRECV.DIRECTION.NAME
  8. Add client names TibcoTA will operate with :

    TransportLayer.Tibco.ClientNames = Connection1,Connection2
  9. Add properties for each subject for defined clients. For example:

    TransportLayer.Tibco.Connection1.OutSubject.Name = CONN1.OUT
    TransportLayer.Tibco.Connection1.OutSubject.CMTransportName = CMT.CONN1.OUT
    TransportLayer.Tibco.Connection1.OutSubject.CMTransportReceiverName = CMTRECV.CONN1.OUT
    TransportLayer.Tibco.Connection1.OutSubject.FieldName = ANOTHER_TAG
    TransportLayer.Tibco.Connection1.OutSubject.TransportType = CMTransport
    TransportLayer.Tibco.Connection1.OutSubject.CMTransportLedgerName = conn1.out.ledger
    TransportLayer.Tibco.Connection1.OutSubject.Service = 8888
    TransportLayer.Tibco.Connection1.OutSubject.Network = 10.17.14.170
    TransportLayer.Tibco.Connection1.OutSubject.Daemon = 10.17.14.170:7500
  10. Restart FixEdge to apply changes.

After changes are made the FixEdge properties file may looks like this:

#------------------------------------------------------------
# Transport Layer Section
#------------------------------------------------------------
#Comma separated list of identifiers of Transport Adapters should be loaded. 
TransportLayer.TransportAdapters = TransportLayer.SmtpTA,TransportLayer.Tibco
...
#------------------------------------------------------------
# The Tibco Adaptor configuration file.
#------------------------------------------------------------
TransportLayer.Tibco.Description = Tibco Transport Adaptor
TransportLayer.Tibco.DllName = ./bin/TibcoAddinDll_8.dll
TransportLayer.Tibco.Type = DLL
TransportLayer.Tibco.Default.FieldName = FIX_MSG
TransportLayer.Tibco.Default.ErrorFieldName = ERROR_MSG
TransportLayer.Tibco.Default.TransportType = NetTransport
TransportLayer.Tibco.Default.Service = 7777
TransportLayer.Tibco.Default.Network = 10.17.14.170
TransportLayer.Tibco.Default.Daemon = 10.17.14.170:7500
TransportLayer.Tibco.Default.CMTransportName = CMTransport
TransportLayer.Tibco.Default.CMTransportRequestOld = false
TransportLayer.Tibco.Default.CMTransportLedgerName = ledger
TransportLayer.Tibco.Default.CMTransportSyncLedger = false
TransportLayer.Tibco.Default.CMTransportNetwork = true
TransportLayer.Tibco.Default.CMTransportReceiverName = CMTRECV.CONN1.IN
TransportLayer.Tibco.ClientNames = Connection1,Connection2
TransportLayer.Tibco.Connection1.InSubject.Name = CONN1.IN
TransportLayer.Tibco.Connection1.InSubject.CMTransportName = CMT.CONN1.IN
TransportLayer.Tibco.Connection1.InSubject.FieldName = ANOTHER_TAG
TransportLayer.Tibco.Connection1.InSubject.TransportType = CMTransport
TransportLayer.Tibco.Connection1.InSubject.CMTransportLedgerName = conn1.in.ledger
TransportLayer.Tibco.Connection1.InSubject.Service = 8888
TransportLayer.Tibco.Connection1.InSubject.Network = 10.17.14.170
TransportLayer.Tibco.Connection1.InSubject.Daemon = 10.17.14.170:7500
TransportLayer.Tibco.Connection1.OutSubject.Name = CONN1.OUT
TransportLayer.Tibco.Connection1.OutSubject.FieldName = ANOTHER_TAG
TransportLayer.Tibco.Connection1.OutSubject.TransportType = NetTransport
TransportLayer.Tibco.Connection1.OutSubject.Service = 8888
TransportLayer.Tibco.Connection1.OutSubject.Network = 10.17.14.170
TransportLayer.Tibco.Connection1.OutSubject.Daemon = 10.17.14.170:7500
TransportLayer.Tibco.Connection1.ErrorSubject.Name = CONN1.ERROR
TransportLayer.Tibco.Connection1.ErrorSubject.FieldName = ANOTHER_TAG
TransportLayer.Tibco.Connection1.ErrorSubject.ErrorFieldName = ERROR_TAG
TransportLayer.Tibco.Connection1.ErrorSubject.TransportType = NetTransport
TransportLayer.Tibco.Connection1.ErrorSubject.Service = 8888
TransportLayer.Tibco.Connection1.ErrorSubject.Network = 10.17.14.170
TransportLayer.Tibco.Connection1.ErrorSubject.Daemon = 10.17.14.170:7500
TransportLayer.Tibco.Connection1.UnroutedSubject.Name = CONN1.UNROUTED
TransportLayer.Tibco.Connection1.UnroutedSubject.FieldName = ANOTHER_TAG
TransportLayer.Tibco.Connection1.UnroutedSubject.TransportType = NetTransport
TransportLayer.Tibco.Connection1.UnroutedSubject.Service = 8888
TransportLayer.Tibco.Connection1.UnroutedSubject.Network = 10.17.14.170
TransportLayer.Tibco.Connection1.UnroutedSubject.Daemon = 10.17.14.170:7500

Troubleshooting

Since FIXEdge version 6.5.0 linking mode has been changed for Tibco client libs on Windows (static to dynamic). If user does not add Tibco libs into bin folder (tibrv.dll tibrvcm.dll tibrvft.dll), he catches a error in FE.log: 

UTC ERROR [TransportLayer] 15240 Transport Adaptor 'Tibco' has failed to initialize: Error loading DLL 'D:\B2BITS\FIXEdge\FIXEdge-6.5.0.255-FA-2.23.0.62-Windows-vc14-x64\FIXEdge\bin\TibcoAddin-vc10-MD-x64.dll'.

tibrv.dll, tibrvcm.dll, tibrvft.dll should be added in PATH (or in bin directory) to avoid this error.