Architecture

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

Note: The above figure represents an FTL message broker-based architecture. Peer-to-peer FTL configurations are also supported.

TIBCO® Messaging - Bridge for Apache Kafka

TIBCO Messaging - Bridge for Apache Kafka is comprised of two connectors that appear to FTL as two distinct clients:

  • The Source Connector receives FTL messages and converts their format from an FTL-formatted message to an equivalent JSON-based or Avro-based representation. It 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. It then converts their format from JSON or Avro to FTL, and 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. This configuration is 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 TIBCO Messaging - 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 Client Applications for consumption.

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

Apache Kafka Client Applications can publish FTL-styled, JSON-formatted, or Avro-formatted messages to topic(s) to which the Sink Connector is subscribed. The Sink Connector 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. It 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.