Nouveau mécanisme de swap des messages
Ajout d'une interface MessageTable dans joram-mom-core.
Objectif : permettre de gérer le swap de message de manière plus efficace dans JoramMQ.
Deux implémentations existent :
- la première dans Joram OW2 qui est une simple table de hash identique à celle utilisée par Joram 5.9.0. Le swap est géré indépendamment et globalement (par la JVM) au travers du mécanisme de "soft reference".
- la seconde dans JoramMQ qui gère le swap de message de manière explicite (sans utiliser le mécanisme de "soft reference"). De plus, les messages non persistents peuvent également être swappés, ce qui n'est pas le cas avec Joram 5.9.0.
L'utilisation de cette interface implique quelques légères modifications du code de Joram OW2 :
- UserAgent : à la fin de la réaction à la notification TopicMsgsReply, la méthode 'checkSwap' de MessageTable doit être appelée.
- UserAgent : le nettoyage effectué dans 'cleanPendingMessages' doit être délégué à MessageTable au travers d'une méthode 'clean'. Pour le nettoyage des identifiants de message de chaque ClientSubscription, il y a deux possibilités :
- retirer les messages invalides de chaque ClientSubscription : c'est la manière actuelle de faire avec Joram 5.9.0.
- ne pas les retirer et accepter que la MessageTable renvoie 'null' lorsqu'un message a été invalidé et extrait. Ce fonctionnement me paraît plus efficace. Par contre, chaque ClientSubscription est mise à jour de manière "lazy" (en différé, au moment où le message invalide est demandé) et non de manière synchrone avec la MessageTable.
[JORAM-164] created at 2013-11-27 15:54:43 by feliot, version JORAM_5_9_1