Search code examples
distributed-computingfault-tolerancetibco-ems

TIbco EMS Client Fault Tolerance


I am aware that the Tibco EMS provides Fault Tolerance in a hot backup configuration on the server side as detailed in the User's Guide, this answer and here.

But on the client side does Tibco EMS provide out of the box solution for fault-tolerant clients? An example: on the topic Sports.F1.PitStop two clients (server1, server2) register as publishers. The idea being that should something go wrong on server1 (i.e. publisher on server1 goes down), server2 would seamlessly continue to publish on the topic. So the question is, does Tibco EMS provide such client-side fault-tolerance capability?


Solution

  • No.

    EMS (or JMS) does not support a client-side fault tolerance feature. The reason is simple : typically, publishers processes don't know each other.

    To elaborate:

    Topics usually accepts many publishers (more than two). In a pub/sub scenario, publishers don't know subscribers, and to an extent they don't typically know the other publishers.

    Your solution:

    My first question regarding your solution: Why can't both servers publish messages at the same time ?

    I assume you have a good reason (like messages from server1 and server2 being redundant). In that case, then you will have to have some kind of communication between your "active" and "passive" server.

    Possibility 1 : Server2 is connected to a simple service/rmi/other heartbeat mechanism, and can tell if/when Server1 as stopped publishing.

    Possibility 2 : Server2 is itself subscribed to the topic, and can tell when messages have stopped.

    Last note: In case you meant shared "subscriptions" (as in, one durable subscription being shared between two servers): the new JMS 2.0 API is supporting this feature. EMS 8 is the only version of EMS supporting JMS 2.0.