One Endpoint Many Publishers

This second example extends the previous example by adding another publisher. Endpoints hide any additional complexity from programmers, and simplify administrative tasks.

The diagram below shows two host computers connected over a LAN. Two publishers publish messages: one publisher on each host. On each host, many subscribers receive messages. Every subscriber receives the messages from each of the publishers.

As in the previous example, programs co-located on the same host computer communicate over shared memory transports, while programs on separate hosts communicate over multicast transports. Observe the increased number of transports (red lines). Replicating this arrangement on additional hosts further multiplies the number of transport lines.

Adding Another Publisher

The oval shapes in the diagram hint at the way endpoints can simplify this situation. Notice that the programmer’s responsibility is the same as in the previous example: implement the publishing program and the subscribing program. Only the administrator’s work has increased, though not as much as one might at first think. The administrator deploys the additional publishing program on Host 2, but the transport configuration remains the same as in the preceding example (refer back to the diagrams Endpoints and Separation of Responsibilities). TIBCO FTL software uses the configuration of the shared memory transport (T1) to automatically arrange two corresponding transport buses, T1a and T1b, one on each host computer. Similarly, TIBCO FTL software can reuse the configuration of the multicast transport (T2), integrating the new publisher into the existing transport bus.

To review, we have seen that endpoints simplify programming by insulating programs from the complexity of transports. We have also seen that endpoints can simplify the administrative task of arranging transports.