TIBCO eFTL? is an excellent way to handle large numbers of remote clients while providing connectivity to applications built using either the TIBCO FTL® or TIBCO Enterprise Message Service? messaging systems.
This article covers exchanging messages between clients using TIBCO eFTL on the front end and TIBCO Enterprise Message Service on the back end using two distinct methods:
- Using an EMS channel
- Using an FTL channel
Before we dive into the details, it's important to note that TIBCO Enterprise Message Service delivers messages based on topic names while TIBCO FTL and TIBCO eFTL deliver messages based on the content of named fields within the messagefor more details, check out an TIBCO FTL concept video on Content-based Addressing). The TIBCO eFTL server handles message re-formatting as appropriate to facilitate the exchange of messages with the non-client facing side of the TIBCO FTL server.
The TIBCO eFTL server re-formats messages as they pass through its EMS side according to a specific set of rules. Below are the rules that are in effect when using an EMS channel:
When an EMS message is forwarded via an EMS channel to the TIBCO eFTL server, it sets the _dest field of the message to the topic name specified for the EMS message which is then passed to the TIBCO eFTL client. When an TIBCOeFTL client creates a subscription with a content matcher that specifies a field called _dest, an EMS subscription to the corresponding topic is created on the EMS channel.
When the TIBCO eFTL server receives a message from an TIBCO eFTL client, it tries to forward the message to the EMS server via teh EMS channel using the information in the fields of the received message. If the message contains a _dest field, the TIBCO eFTL server publishes the message on the EMS channel on a topic corresponding to value of the _dest field ion the received message. If the message does not contain a _dest field or the _dest value is not a valid topic name, the message will be discarded and will not be published to the EMS server. The TIBCO eFTL publisher receives an error callback indicating the message was not re-published on the EMS channel.
Alternatively, an FTL channel can be configured to connect to a TIBCO Enterprise Message Service server. Here are the rules in effect when using an FTL channel to communicate to the TIBCO Enterprise Message Service server (in this situation, the server looks just like another FTL client to the TIBCO eFTL server):
EMS messages can be exported from the TIBCO Enterprise Message Service server (acting in the role of an FTL publisher) to the TIBCO eFTL server (acting in the role of an FTL subscriber) which then forwards the messages to the TIBCO eFTL side.
Messages which are received by the TIBCO eFTL server are re-published on the FTL channel for receiving by the TIBCO Enterprise Message Service server (each acting as publisher and subscriber respectively) where the FTL messages are imported into the TIBCO Enterprise Message Service server.
Note that there is not "topic" mapping happening; in this case, the TIBCO Enterprise Message Service server is acting in the role of an FTL subscriber and no topic mapping is needed in order to successfully receive a message from an TIBCO eFTL client via the TIBCO eFTL server
When the EMS transport defines export_headers as true, the TIBCO Enterprise Message Service server converts the JMS header fields and their respective values to FTL fields and values and then adds them to the already existing fields in the outgoing message. This allows TIBCO FTL to use content matchers on fields containing JMS header information to control what messages are actually received by the TIBCO eFTL server. When converting the JMS header fields to FTL message fields, header fields are given the prefix _emshdr which indicates that they where added by the TIBCO Enterprise Message Service server as part of the inclusion of the JMS headers and are not part of the original message contents. The TIBCO eFTL client acting as a subscriber can use an appropriate content matcher to filter the message stream to receive only specific messages of interest.
For example, the JMSDeliveryMode header field is assigned the field name _emshdr:JMSDeliveryMode when added into the TIBCO FTL message.
This should get you started with moving TIBCO eFTL messages in and out of an EMS-based messaging system; for more details on the topics above and specific configuration settings, check out theTIBCO eFTL and TIBCO Enterprise Message Service documentation