Skip to content

November 25, 2009

TIBCO Developers Library – What is TIBCO Enterprise Message Service?

TIBCO Enterprise Message Service

In developing large and useful business applications, there is really a need for communication between two or more software components so that they may perform their tasks accordingly. Like for TIBCO consultants, they need to create a way where TIBCO software components can communicate with one another especially in carrying out the required tasks.

One way of communication is through direct connection between different systems. However, this kind of approach is not applicable for large number of systems because some software components function differently from others. Also, it will require all the systems to know how to connect to every system in the network. This is one of the reasons why enterprise messaging system was created; so that all these systems can connect to each other through a central messaging server and all they need to know is how to connect to this central messaging server. This enterprise message system is implemented in TIBCO Enterprise Message Service.

What is enterprise messaging?

Enterprise messaging allows different systems to communicate with each other using a loosely coupled architecture. A loosely coupled architecture means that we can replace components without affecting the other components running in the server. The reason behind this is that the components are less dependent on each other. This also means that the system can continue to work even though some components are not connected to the network or to the server. Furthermore, some components within the system can still continue to send messages without waiting for reply messages.

What are the advantages of enterprise messaging?

Enterprise messaging can provide a single unifying medium of communication between different systems. It is also good for a network setup that is always changing.

For example, we have ten different systems and we want all of these systems to communicate with each other. If we are not using messaging, then we will need to know and configure the connection to every system. Now, just imagine what would happen if we have 100 computers or more. But, if we are using enterprise messaging, then we will just need to know how to connect the systems to a central messaging server.

Another advantage is that there is a movement of real-time data. The messages can be created and received in real-time.

Moreover, enterprise messaging has time independence, which means that the client has the option to still receive messages when he reconnects to the server even if the client was down when the message was sent.

What is TIBCO EMS?

TIBCO EMS stands for Enterprise Message Service and it is TIBCO’s implementation of Java Message Service. TIBCO EMS is fully compliant with the JMS specification and it has added some enhancements to the JMS specification. It also has added features like load-balancing, routing, and fault tolerant configurations, which help improve performance and minimize failures in the server.

What is JMS?

JMS which stands for Java Message Service is an enterprise messaging specification created by Sun Microsystems. It is also what we call the store-and-forward messaging system. Store-and-forward messaging system means that all messages created by clients pass through the server before it is sent or forwarded to the designated consumers. This also applies to the reply messages created by the consumers.

JMS also provides both queue-based and publish-subscribe APIs. Queue-based APIs make use of queue destinations and publish-subscribe APIs make use of topic destinations.

What is the JMS Message structure?

The JMS Message structure is composed of the headers, properties, and body. The header is required, while the properties and body are both optional.

The Header of the message contains predefined fields which are used to route and deliver the message. Some of these predefined fields are the following:

o JMSDestination is the destination to which the message is sent.

o JMSDeliveryMode determines if the message is persistent or non-persistent

o JMSExpiration is the length of time that the message will live before expiration.

The Properties (optional) are optional properties that can be added on JMS systems by authorized users such as administrators.

The Body (optional) contains the data you want to send to the consumers. It must be one of these five types:

o TextMessage

o MapMessage

o BytesMessage

o StreamMessage

o ObjectMessage

What is message compression?

Message compression ensures that the message will take less memory space when saved on the storage of the server. Nonetheless, we must take note that message compression will only compress the body of a message. The headers and properties can never be compressed.

What are the types of queues and topics we can create in EMS?

There are three types of queues or topics that we can create in EMS. They can be static, temporary, or dynamic queues/topics. Static queues/topics are specified explicitly in the configuration files. Temporary queues/topics are used for reply messages in request/reply interactions. Dynamic queues/topics are not specified in the configuration files for these are dynamically created by client programs. Moreover, dynamic queues are TIBCO specific, which means that it is an extension added by TIBCO to the JMS specification.

What are the advanced features of TIBCO EMS?

The advanced features of TIBCO EMS include JMS capability to non-Java programs such as C and C# Client API. It also provides an administrative API which is used for managing and monitoring the EMS server and its components. It can be configured for connection to other EMS servers such as fault-tolerance and routing so that multiple EMS servers can participate in the server operations. It can also be connected to other TIBCO components specifically TIBCO Rendezvous and TIBCO SmartSockets. It offers destination bridging which makes it easier to send the same message from one destination to other destinations. It has JNDI and SSL support to provide security over the EMS server and its components. Also, it can be integrated into third party application servers.

How do you configure the TIBCO EMS?

There are the three ways to configure TIBCO EMS. The first way is by modifying the configuration files. The main server configuration file is the tibemsd.conf. This is where you can set the names of the other configuration files. It has some basic parameters such as server name and password, listen port and storage location for messages. Its other parameters are for fault-tolerance, and SSL.

Another way to configure TIBCO EMS is through the use of the EMS Administration tool which comes in console mode. This means that you have to type or issue the correct commands to use this tool.

The third way to configure TIBCO EMS is the through the use of Administration API.

What is fault tolerance and how does it work?

Fault tolerance is having a pair of EMS servers configured as the primary and backup servers. The primary server accepts client connections, and interacts with clients to deliver messages. When the primary server fails, the backup server resumes the operation in its place. The backup server will be the primary server, and the other server will be the backup server when it goes online.

One important configuration for these fault-tolerant servers is that they should have access to the same shared state which consists of information about client connections and persistent messages.

What are destination bridges?

Destination bridging is a server-based solution provided by TIBCO EMS. It is an alternative for creating messages multiple times. For example, if we want to send the same message from one destination to other destinations, we don’t need to send the same message a number of times. We just bridge the different destinations so that the same message will be sent to all the bridged destinations.

How can you improve Client-side processing while using TIBCO EMS?

We can improve the client side processing by configuring the Server Settings, Destination Settings and Security Settings.

In the server settings, we can use EMS routing between servers within the network so that all servers and systems within the network can communicate with each other. Also, we should use destination bridging so that we don’t have to send the same message again and again.

For the destination settings, we should only use durable topics if it is really needed. We can enable pre-fetching for small size messages. We can make use of lower JMS reliability modes. For client-load balancing, we can use non-exclusive queues so that more than one consumer can process the message from the queue in a round-robin fashion.

In setting up the security for TIBCO EMS, we should just use SSL if there is no available Virtual Private Network. Another way is through disabling authentication if possible so that the servers and clients can easily communicate with each other.

These are just some of the important information you need to know about TIBCO EMS and it still has a lot more to offer which you will learn upon using it. This TIBCO component is so easy to use and its functionality is great. So, if you are developing large business applications and you want your software components to communicate with each other, TIBCO EMS is the right software for you.

NOTE: This article was written by one of the TIBCO Certified Professionals of Xmarter, Inc., a technology consulting firm that specializes in delivering business solutions using TIBCO technology. To schedule a technical interview with the consultants, send an email to

Share your thoughts, post a comment.


Note: HTML is allowed. Your email address will never be published.

Subscribe to comments