2.3. Client-side Failure Handling

The JMS specification does not control how the server should behave on High Availability fail over, or clustering. However, the specification does recommend how an application must handle failures and rollback scenarios.
JBoss Messaging does not throw an exception to the client during fail over. Applications in JBoss Messaging are automatically connected to another node in the cluster.
In HornetQ, fail over or rollback triggers an exception. Your JBoss Messaging application must capture this exception and retry sending the message for it to be compatible with HornetQ.
In JBoss Messaging, the following expression was sufficient to handle failures:
producer.send(createMessage(session, i));
System.out.println("Message: " + i);
In HornetQ, the following try block is required:
try {
  producer.send(createMessage(session, i));
  System.out.println("Message: " + i);
} catch (Exception e) {
  Thread.sleep(1000); 
  producer.send(createMessage(session, i));
}