ESE-26 More Robust Retry Mechanism for Sending Notifications Locally

Published on: 18/12/2012


The Transformation module sends a notification to the Syndication Interface module whenever it successfully updates the national information in the MIDB. This mechanism, however, is not completely robust. For instance, once the update to the MIDB has been made and the database transaction has been committed, the Transformation module still needs to send the notification to  the  Syndication  Interface  module's  webservice.  If  this  webservice  is  not  available,  a notification will be missed.   To improve robustness of this mechanism, at least the following options exist:
  1. Send  the  notifications  via a reliable  messaging  mechanism  backed  by a persistent storage for messages that cannot be delivered automatically.  One such mechanism would  be  the  Java  Messaging  System  (JMS).  Sending  messages  should  then  be included in the same Java transaction as the update to the MIDB, so that either both succeed or both fail. This requires a Java transaction manager with support for XA transactions, as well as a JMS implementation. Both are not included in Tomcat; hence in practice this solution requires a full Java EE implementation.
  2. Integrate the Syndication Interface and Transformation modules into one module that both updates the MIDB and updates the information on fragments and snapshots in the Syndication Storage database. This would need to be performed in a single database transaction.
Probably the second option has lesser impact on the implementation.