TIBCO FTL® Concepts
Important Information
About this Product
TIBCO Documentation and Support Services
FTL Concepts: a Bottom-Up Approach
Messaging Model
Message Broker Pattern
One-to-Many Publishing
Transports
Transport Types
Endpoints
One Endpoint Many Subscribers
One Endpoint Many Publishers
Distinct Endpoints in One Program
Content Matchers
One-to-One Communication
Request/Reply Pattern
Persistence: Stores and Durables
Stores and Durables
Store Examples
One Store
Two Stores
Shared Durable
Direct Paths and Merging
Formats
Application Endpoints
Variant Configurations
Realm
Concept Review
From Concepts to Usage
TIBCO FTL® Development
Important Information
About this Product
TIBCO Documentation and Support Services
Product Overview
Brief Definitions of Key Concepts
Messaging Concepts
Infrastructure Concepts
Administrative Concepts
Information for Developers
API Reference Documentation
Sample Programs
C Programmer’s Checklist
Java Programmer’s Checklist
.NET Framework and .NET Core Programmer’s Checklist
Go Programmer’s Checklist
Restrictions on Names
Reserved Names
Length Limit
IPv4 and IPv6
Application Design
Structuring Programs
Structuring Programs in Go
Application Instance Identifier
Callbacks and Recursive Dispatch
Inline Mode
Request and Reply
Recovery of a Disabled Process Restart versus Reopen the Realm
Clean-Up
Consolidation with Loose Coupling
Endpoints
Abilities
Endpoints and Stores
Send: Blocking versus Non-Blocking
Messages
Message Objects in Program Code
Message Origin
Message Ownership
Message Access
Message Mutability
Copy of a Message
Messages and Thread-Safety
Field Values and Types
Field Data Type Reference
Storage of Field Values within Messages
DateTime
Formats: Managed, Built-In, and Dynamic
Format Names
Field Names
Flexibility in Formats and Messages
Field Access: Names and References
Reusing Message Objects
Built-In Formats Reference
Opaque Format
Keyed Opaque Format
String Encoding
DateTime Values Printable String Form
Go: Marshal Method for FTL Messages
Delivery
Inbound Message Delivery
Content Matchers
Match String Syntax
Match Semantics
Content Matcher Performance and Architecture
Subscriber Interest
Inline Mode
Callback Restrictions with Inline Mode
Transport Restrictions with Inline Mode
FTL Server Interactions
FTL Server Connect Call
Application Name
Client Label
Operation of the Realm Connect Call
Trust Properties of the Realm Connect Method
Trust File
Update and Disable
Logs
Log Levels
Tuning the Log Level
Log Level Reference
Log Element Tags Reference
Log Output Targets
Log Content and Form
Advisory Messages
Advisory Message Common Fields Reference
Subscribing to Advisory Messages
Advisory Messages Catalog
DATALOSS FAILOVER_LOSS
DATALOSS SENDER_DISCARD
DATALOSS QUEUE_LIMIT_EXCEEDED
DATALOSS INCOMPLETE_MESSAGE
DATALOSS TPORT_DATALOSS
DATALOSS RECONNECT_LOSS
DATALOSS STORE_DISCARD_DATALOSS
DATALOSS UPSTREAM_LOSS
DATALOSS DIRECT_SUB_LOSS
ORDINAL_UPDATE
GROUP_STATUS
RESOURCE_AVAILABLE
RESOURCE_UNAVAILABLE
RETRANSMISSION RETRANSMISSION_REQUEST
RETRANSMISSION RETRANSMISSION_SENT
RETRANSMISSION RETRANSMISSION_SUPPRESSED
SUBSCRIBER_FORCE_CLOSE
LOCK_LOST
Notifications
Notifications Catalog
CLIENT_DISABLED
Groups of Applications
Introduction to Groups
Simple Fault Tolerance with Groups
Groups with More than Two Roles
Groups Principles of Operation
Group Service
Group Members
Interactions within a Group
Side Effects of Groups
Techniques for Programming with Groups
Program Structure for Groups
Activation Interval
Disconnect
Group Status
Group Observer
Programmer’s Checklist Addenda for Groups
Persistence: Stores and Durables
Purposes of Persistence
Basic Definitions for Persistence
Durable Subscribers
Standard Durable Reference
Shared Durable Reference
Last-Value Durable Reference
Acknowledgment of Message Delivery
Message Delivery Behavior
Maximum Message Size
Delivery Count for Shared Durables
Programmer’s Checklist Addenda for Stores and Durables
Key/Value Maps
Locks
Direct Publishers and Subscribers
Use Cases for Direct Publishers and Subscribers
Programming with Direct Publishers
Programming with Direct Subscribers
Multithreading with Direct Publishers and Subscribers
Multiple Direct Subscribers
Package Contents
Directory Structure Reference
Sample Programs Reference
Coordination Forms
TIBCO FTL® Administration
Important Information
About this Product
TIBCO Documentation and Support Services
Product Overview
NEW: Veterans Read This First
Brief Definitions of Key Concepts
Messaging Concepts
Infrastructure Concepts
Administrative Concepts
Persistence Concepts
FTL Server and Services
FTL Server Executable
FTL Server: Message Broker Default Operation
FTL Server Configuration
FTL Server Configuration Parameters
Core Servers
Auxiliary Servers
URL List
Password Security
Realm Service Configuration Parameters
Persistence Service Configuration Parameters
Bridge Service Configuration Parameters
eFTL Service Configuration Parameters
FTL Administration Utility
Realm Administration Tools
Realm Definition Terminology
Application and Endpoint Concepts
Configuration Model
Endpoints
Abilities
Implementation: Endpoints (Micro)
Transports
Transport Connectors
Connectors to Cover Required Abilities
Implementation: Application (Macro)
Application Definitions
Application Instance Definitions
Default Instance and Named Instances
Instance Matching
Instances Determine Subscribers and Durables
Administrative Requirements
Administrative Options
Multiple Transports and Serial Communications
Sample Configuration 1: Default with tibsend and tibrecv
Sample Configuration 2: tibsendex and tibrecvex
Sample Configuration 3: tibrequest and tibreply
Transport Concepts
Transport Definitions Must be Unique
Unitary and Fragmentary Transport Definitions
Related Transports
Bus Topologies
Unitary Mesh
Asymmetric Multicast Topologies
Assembling Larger Topologies from Pair Connections
Hub-and-Spoke
Mesh from Pair Connections
Pair Connections
Listen End and Connect End
Connect Requests are Specific to IP Addresses
Subscriber Interest
Send: Blocking versus Non-Blocking
Shared Memory Transports and One-to-Many Non-Blocking Send
Blocking Send and Inline Mode
Inline Mode for Administrators
Transport Restrictions with Inline Mode
Receive Spin Limit
Polling for Data
Receive Spin Limit Tuning
Inheritance of Receive Spin Limit From Transports to Dispatch
UDP Packet Send Limit
Transport Protocol Types
Dynamic TCP Transport
Dynamic TCP Transport: Parameters Reference
Static TCP Transport
Static TCP Transport: Parameters Reference
Multicast Transport (mcast)
Multicast Group as Shared Communication Medium
Multicast Transport: Parameters Reference
Multicast Port Ranges
Multicast Port Range Syntax
Configuring Multicast Inbox Communication
Multicast Retransmission Suppression
Process Transport (PROC)
Process Transport: Parameters Reference
Shared Memory Transport
Configuring a Shared Memory Transport for Access by Different Users: UNIX
Configuring a Shared Memory Transport for Access by Different Users: Windows
Shared Memory Transport: Parameters Reference
Direct Shared Memory Transport
Reliable UDP Transport (RUDP)
RUDP Transport: Parameters Reference
Remote Direct Memory Access Transport (RDMA)
RDMA Transport: Parameters Reference
RDMA Hardware Reference
RDMA Implementation Library Reference
Configuring Locked Buffer Memory for RDMA
Buffer and Performance Settings for Transports
Formats
Formats: Managed, Built-In, and Dynamic
Defining Formats
Built-In Formats
Affiliated FTL Servers
Server Roles
Modifications to the Realm Definition of Affiliated Servers
Disconnected Satellite
Configuring Satellite FTL Servers
Secure FTL Servers
Securing FTL Servers
FTL Server Certificates and Web Browsers
Trust File
Realm Service
Authentication Service
FTL Server Authorization Groups
Using the Internal Flat-File Authentication Service
Using the External JAAS Authentication Service
JAAS Login Modules
FTL Server and its Interfaces
FTL Server GUI Address
GUI Overview
GUI Top Bar
GUI Status Tables
GUI Left Column Menu
GUI Grids
Grid Search
GUI Details Panels
Restrictions on Names
Reserved Names
Length Limit
Size Units Reference
Realm Definition Storage
Modification Lock
The Deploy Transaction
Realm Modifications Reference
FTL Server GUI: Configuration
Applications Grid
Application Definition Details Panel
Endpoint Details Panel
Transports Grid
Transport Details Panel
Formats Grid
Realm Properties Details Panel
Message Formats Administration
Validation Results
Deployment History
New Clients during a Deployment
FTL Server GUI: Monitoring
Clients Status Table
Client Status
Conditions for Disabling Clients
Client Status Details
Client Label
FTL Servers Status Page
Realm Services Status Page
FTL Server Web API
HTTP Request Addressing
JSON Attribute Values
HTTP Authentication
HTTP Headers
Response Status Codes
Responses
Pagination
Semantics of Web API Objects and Methods
Configuring the Realm Definition Using the Web API
Creating or Modifying a Definition
Workspace
GET realm/workspace
GET realm/workspace/validation
POST realm/workspace
DELETE realm/workspace
Deployments
GET realm/deployments
GET realm/deployments/name
POST realm/deployments
DELETE realm/deployments/name
PUT realm/deployments/name
Definition Objects
Application Definition Objects
GET realm/applications
GET realm/applications/app_name
GET realm/applications/app_name/endpoints
GET realm/applications/app_name/endpoints/ep_name
GET realm/applications/app_name/instances
GET realm/applications/app_name/instances/inst_name
GET realm/applications/app_name/instances/inst_name/endpoints
GET realm/applications/app_name/instances/inst_name/endpoints/ep_name
POST realm/applications
POST realm/applications/app_name/endpoints
POST realm/applications/app_name/instances
DELETE realm/applications/app_name
DELETE realm/applications/app_name/endpoints/ep_name
DELETE realm/applications/app_name/instances/inst_name
PUT realm/applications/app_name
PUT realm/applications/app_name/endpoints/ep_name
PUT realm/applications/app_name/instances/inst_name
PUT realm/applications/app_name/instances/inst_name/endpoints/ep_name
Transport Definition Objects
GET realm/transports
GET realm/transports/name
POST realm/transports
DELETE realm/transports/name
PUT realm/transports/name
Persistence Definition Objects
GET realm/persistence
GET realm/persistence/clus_name
GET realm/persistence/clus_name/servers
GET realm/persistence/clus_name/servers/svc_name
GET realm/persistence/clus_name/sets
GET realm/persistence/clus_name/sets/set_name
GET realm/persistence/clus_name/sets/set_name/servers
GET realm/persistence/clus_name/sets/set_name/servers/svc_name
GET realm/persistence/clus_name/stores
GET realm/persistence/clus_name/stores/stor_name
GET realm/persistence/clus_name/stores/stor_name/durables
GET realm/persistence/clus_name/stores/stor_name/durables/dur_name
GET realm/persistence/clus_name/stores/stor_name/templates
GET realm/persistence/clus_name/stores/stor_name/templates/tem_name
POST realm/persistence
POST realm/persistence/clus_name/servers
POST realm/persistence/clus_name/sets
POST realm/persistence/clus_name/sets/set_name/servers
GET realm/persistence/clus_name/sets/set_name
POST realm/persistence/clus_name/stores
POST realm/persistence/clus_name/stores/stor_name/durables
POST realm/persistence/clus_name/stores/stor_name/templates
DELETE realm/persistence/clus_name
DELETE realm/persistence/clus_name/servers/svc_name
DELETE realm/persistence/clus_name/sets/set_name
DELETE realm/persistence/clus_name/sets/set_name/servers/svc_name
DELETE realm/persistence/clus_name/stores/stor_name
DELETE realm/persistence/clus_name/stores/stor_name/durables/dur_name
DELETE realm/persistence/clus_name/stores/stor_name/templates/tem_name
PUT realm/persistence/clus_name
PUT realm/persistence/clus_name/servers/svc_name
PUT realm/persistence/clus_name/sets/set_name
PUT realm/persistence/clus_name/sets/set_name/servers/svc_name
PUT realm/persistence/clus_name/stores/stor_name
PUT realm/persistence/clus_name/stores/stor_name/durables/dur_name
PUT realm/persistence/clus_name/stores/stor_name/templates/tem_name
PUT realm/applications/app_name/endpoints/ep_name
GET realm/zones
GET realm/zones/zone_name
POST realm/zones
PUT realm/zones/zone_name
DELETE realm/zones/zone_name
Bridge Definition Objects
GET realm/bridges
GET realm/bridges/br_name
POST realm/bridges
DELETE realm/bridges/br_name
PUT realm/bridges/br_name
Format Definition Objects
GET realm/formats
GET realm/formats/name
POST realm/formats
DELETE realm/formats/name
PUT realm/formats/name
Realm Definition and Properties
GET realm
POST realm
GET realm/properties
POST realm/properties
Status Objects
FTL Server Status Objects
GET ftlservers/server_name
POST ftlservers/server_name
GET ftlservers/server_name/status
GET cluster
POST cluster
GET server
POST server
Clients Status Objects
Filters for Client Status Methods
HTTP Parameters for Client Filtering
HTTP Parameters for Client Monitoring
GET clients
GET clients/ID
POST clients/ID and POST clients
Bridges Status Objects
GET bridges
GET bridges/br_name
POST bridges/br_name
Group Server Status Object
GET groupserver
POST groupserver
GET groupserver/transports
POST groupserver/transports
Persistence Status Objects
Filters for Durables
GET persistence/clusters
GET persistence/clusters/clus_name
GET persistence/clusters/clus_name/servers
GET persistence/clusters/clus_name/servers/svc_name
GET persistence/clusters/clus_name/stores
GET persistence/clusters/clus_name/stores/stor_name
GET persistence/clusters/clus_name/stores/stor_name/durables
GET persistence/clusters/clus_name/stores/stor_name/durables/dur_name
POST persistence/clusters/clus_name
POST persistence/clusters/clus_name/servers/svc_name
POST persistence/clusters/clus_name/stores/stor_name/durables/dur_name
DELETE persistence/clusters/clus_name/stores/stor_name/durables/dur_name
GET persistence/zones
GET persistence/zones/name
GET persistence/zones/name/stores
GET persistence/zones/name/stores/name
GET persistence/zones/name/stores/name/durables
GET persistence/zones/name/stores/name/durables/name
Metrics and Monitoring Objects
GET monitoring
Groups of Applications
Introduction to Groups
Group Communication
Group Service
Fault Tolerance of the Group Service
Groups Status Table
Transport Bridge
Transport Bridge Use Cases
Transport Bridge to Shift Fanout for Efficiency
Transport Bridge to Extend beyond a Transport
Transport Bridge: Multiple Transports
Transport Bridge to Cross the Boundary of Shared Memory
Transport Bridge to Isolate Spokes
Transport Bridge Topologies
One Bridge
Two Serial Bridges
Hub-and-Spoke Bridges
Transport Bridge Restrictions
Transport Bridge Configuration
Bridges Grid
Bridge Service
Arranging Fault-Tolerant Bridge Services
Bridges among Dynamic TCP Meshes
Bridges Status Table
Persistence: Stores and Durables
Purposes of Persistence
Persistence Architecture
Coordination for Persistence
Stores for Delivery Assurance
Delivery Assurance: Topology
Delivery Assurance: Retention and Delivery
Delivery Assurance: Larger Networks of Endpoints
Delivery Assurance: Multiple Stores
Delivery Assurance: Durable Collision
Stores for Apportioning Message Streams
Stores for Last-Value Availability
Stores for Message Broker
Default Durable
Durable Behavior
Types of Durables: Standard, Shared, Last-Value, Map
Standard Durable Reference
Shared Durable Reference
Last-Value Durable Reference
Message Interest
Acknowledgment Mode
Wide-Area Forwarding
Arranging a Wide-Area Store
Wide-Area Forwarding: Runtime Conditions
Persistence Services and Clusters
Quorum and Leader
Quorum Conditions: General Rule
Cluster Size
Quorum Behaviors
Persistence Service Fault Tolerance
Configuring Persistence
Stores Grid
Store Detail Panel
Durable Details Panel
Durable Prefetch Count
Clusters Grid
Cluster Details Panel
Persistence Service Details Panel
Zones Grid
Zone Details Panel
Defining a Static Durable
Enabling Dynamic Durables
Enabling Key/Value Maps
Built-In Dynamic Durable Templates
Configuration of Durable Subscribers in an Application or Instance
Instance Matching for Subscriber Name Mapping
Configuring a Default Durable
Persistence Service Transports
Publisher Mode
Persistence Limits
Memory Reserve for Persistence Services
Starting a Persistence Service
Stopping or Restarting a Persistence Service
Persistence Monitoring and Management
Persistence Clusters Status Table
Services List
Persistence Stores Status Table
Durables List
Subscribers List
Before Forcing a Quorum
Saving and Loading Persistence State
Suspending a Persistence Cluster
Saving the State of a Persistence Service
Restarting a Persistence Cluster with Saved State
Clock Synchronization, Affiliated FTL Servers, and Persistence
Disaster Recovery
Scope of the Disaster Recovery Feature
Disaster Recovery Prerequisites
DNS Remapping
Persistence Service Sets: Primary and Standby
Data Gaps and WAN Capacity
Preparing FTL Servers for a Disaster Recovery Site
Recovering after Disaster
Migrating to Another Active Site
IPv4 and IPv6
Multithreading with Direct Publishers and Subscribers
Docker
Transports and Docker
Docker Images for FTL
Starting a Default FTL Server in a Docker Container
Starting a Cluster of FTL Servers in Docker Containers
Package Contents
Directory Structure Reference
Sample Programs Reference
Coordination Forms
Upgrade Migration to a New Release
Upgrading from Release 6.x
Differences When Upgrading from Release 5.x to 6.x
Planning for Migration from Release 5.x to 6.0 or Later
A: Migrating from Release 5.3 or Earlier
Migrating from Release 5.4
B: Migrating Realm Servers to FTL Servers
C1: Migrating Persistence Servers with Dynamic TCP to FTL Servers
C2: Migrating Persistence Servers with Static TCP to FTL Servers
D: Migrating Bridge and eFTL Services
E: Upgrading FTL Clients
Migration and Docker
TIBCO FTL Processes as Windows Services
Installing the FTL Server as a Windows Service
Uninstalling a Windows Service
TIBCO FTL® Monitoring
Important Information
About this Product
TIBCO Documentation and Support Services
Client Monitoring
FTL Server Monitoring
Data Flow of Monitoring Data and Log Messages
Starting the Monitoring Components
Monitoring Gateway
Monitoring Gateway Command Line Reference (tibmongateway)
The Monitoring Endpoint
Subscribing to the Monitoring Stream
Structure of Monitoring Data Messages
Fields of Monitoring Data Messages
Connections Unravel Substreams
Catalogs of Metrics
Catalog of Application Metrics
Catalog of Persistence Metrics
Catalog of eFTL Metrics
Catalog of FTL Server and Service Metrics
Database and Visualization
InfluxDB
Grafana Dashboards
Grafana Reference
Estimating the Volume of Metric Data
Security of Monitoring Data
Monitoring Data: Timing and Interruptions
Central Logging
Clients Forward Log Messages
Log Stream
Log Message Structure
Log Service
Log Service Command Line Reference (tiblogsvc)
Log Service Web API
GET realms
GET realm_UUID/logs
GET realm_UUID/logs/client_ID
GET realm_UUID/advisories
POST shutdown
TIBCO FTL® API Reference
Important Information
About this Product
TIBCO Documentation and Support Services
API Documentation
TIBCO FTL® Security
Important Information
About this Product
TIBCO Documentation and Support Services
Security Features
Security Vulnerabilities
Product Connectivity
Developing Secure Applications
Ensuring FTL System Security: Tasks for Administrators
Coordination
Configuring Authentication and Authorization
Securing FTL Servers
Securing Transport Bridges
Securing Persistence Services
Securing eFTL Services
Securing Monitoring and Log Data
Securing Monitoring Gateway Services
Securing InfluxDB
Securing Grafana
Securing Log Services
TIBCO FTL® Shifting to FTL
Important Information
About this Product
TIBCO Documentation and Support Services
Shifting from EMS to FTL
Shifting from Rendezvous to FTL
Message Form and Content
Message Format
JMS Message Types
Messaging Paradigms
FTL Server and Services
Message Broker Pattern
Realm Definition and Realm Service
Endpoints, Publishers, Subscribers, and Transports
FTL Delivery
Subscribers and Message Interest
Event Queue and Message Dispatch
Callback and Message Processing
Content-Based Addressing
Request/Reply Interactions
Persistence and Durability: Contrast FTL and EMS
Durable Types: Standard, Shared, and Last-Value
Static and Dynamic Durables
Durables and Content Matchers
Arranging Persistence
Arranging Message Brokers
FTL Can Emulate EMS Behaviors
TIBCO FTL® Installation
Important Information
About this Product
TIBCO Documentation and Support Services
Preparing for Installation
Installation Requirements
Platform-Specific Instructions
Guidelines for Linux
Guidelines for macOS
Guidelines for Microsoft Windows
Installation
Installing on Linux
Verifying the Installation on Linux
Optional Post-Installation Steps on Linux
Installing on macOS
Installing on macOS in Silent Mode
Installing on Windows
Installing on Windows in Silent Mode
Next Steps Post Installation
Uninstallation
Uninstalling on Linux
Uninstalling on macOS
Uninstalling on Windows
Uninstalling on Windows in Silent Mode
TIBCO FTL® Glossary
Important Information
TIBCO Documentation and Support Services
About this Product
FTL Glossary