Architecture

The following figure illustrates the interactions among the components of TIBCO Messaging as messages flow between TIBCO FTL clients and Apache Kafka clients.

Note: The above figure represents FTL 6.x-based architecture. Peer-to-peer architecture as used in FTL 5.4 is also supported.

Bridge for Apache Kafka

The FTL Bridge for Apache Kafka comprises two connectors that appear to FTL as two distinct clients:

  • The Source Connector receives FTL messages, converts their format from an FTL-formatted message to an equivalent JSON-based or Avro-based representation, and then sends the messages to the Apache Kafka broker using a topic based on the source connector configuration settings.
  • The Sink Connector receives Apache Kafka messages based on a topic specified in the sink connector configuration settings, converts their format from JSON or Avro to FTL, and then sends the messages to the FTL server.
Note: It is not a requirement that both connectors be configured and/or running; unidirectional message flows can be configured for your specific use case.

While the figure shows the FTL server as a message broker (using the default Server FTL transport type), the bridge's connectors can also interface directly with FTL Clients in a peer-to-peer configuration based on the FTL configuration settings for either the Source or Sink Connectors. The Server-based transport is recommended due to its minimal configuration requirements; this is the default configuration in the supplied Bridge for Apache Kafka configuration files.

Message Flow

The FTL Source Connector can subscribe to FTL messages and deliver those messages, using a pre-defined topic, to the Apache Kafka Broker for distribution to subscribing Apache Kafka clients for consumption.

As these messages move through the Source Connector, they are converted from native FTL format into JSON or Avro format for processing by Apache Kafka clients. This conversion is done dynamically, field-by-field, for each FTL-originated message received.

In the opposite direction, Apache Kafka clients can publish FTL-styled JSON- or Avro-formatted messages to topic(s) the Sink Connector is subscribing to, which then translates these messages into FTL-formatted messages and publishes them to FTL client applications, based on the FTL configurations for the Sink Connector.

Message Representations

The bridge connectors support two representations for Apache Kafka messages: Apache Avro messages and JSON string representation.
  • Avro Messages — Apache Avro is a widely used, compact representation with fast parsing. Avro supports schema evolution and field name aliases.
  • JSON String — JSON strings impose a minimal structure.
  • JSON Messages with Schemas — Schemas can extend the scope of message interoperability to third-party Apache Kafka sink connectors.

Schema Repository

The Schema Repository stores and retrieves Apache Avro message schemas, and is required only when the Apache Kafka client applications use Avro messages. The schema repository relies on the FTL realm service as back-end storage for schemas.