Bonjour,
Je suis devant une problématique pour la quelle j'ai une idée, cependant je ne sais pas si elle est réalisable.

J'ai dans mon architecture physique 1 serveurs d'application, et 6 serveurs de base de données.

Les données sont réparties de manière fonctionnelles sur les serveurs de base.
Un des serveurs de base contient les références permettant de savoir ou doit être stocké tel ou tel autre type de données.

L'application que je développe est chargée de s'adapter à cette architecture déjà existante, pour permettre le chargement de fichiers dans les différentes bases.
L'application est dévelopée avec Seam 2.1.2, les bases sont sur postgresql 8,2 et le serveur d'application est JBoss 5.1.0.GA
Un démon fouille des répertoires d'arrivée de fichiers, et lorsqu'il en trouve un il envoi un message à un MDB chargé de gérer la décompression, qui lui enverra un message à un MDB qui s'occupera de convertir le fichier (étape très lourde), pour enfin envoyer un message à un MDB chargé de lancer les requêtes d'insertion (j'ai simplifié le process pour le post car c'est plus complexe que cela).
J'ai ainsi paraléllisé la décompression et la conversion de ces fichiers grâce à ces MDB.
Cependant la dernière étape de la chaine m'interdit d'avoir plusieurs instance du MDB chargé des base de données lancées au même moment pour d'une part des problèmes de synchronisation, et d'une autre du fait que pour des raisons fonctionnelles liées au contenu des fichier on ne peut pas charger deux fichiers vers la même base en meme temps.

Par soucis de gain de performances j'aimerais pouvoir garantir un chargement en continu sur toutes les bases, tant que cela est possible ( tant que j'ai des fichiers à leur fournir). C'est à dire si j'ai 6 fichiers devant être chargés vers les 6 bases différentes je voudrais pouvoir avoir mes 6 Mdbs tournant en même temps et requétant les 6 serveurs bases en parallèle.

La solution simple consisterait à écrire un MDB par base de données auquel on affecterait à chacun une queue.

Toutefois je n'aime pas trop cette solution qui amènerait beaucoup de code redondant.

Je me demandais s'il était possible de créer les MDB à la volée, en fonction de données chargées en base, afin d'avoir un code unique.
En base j'aurais le nom du mdb, le nom du serveur et les infos nécessaire pour le requêter. Ainsi si un serveur de base de données doit être rajouté, il n'y aura qu'à rajouter une ligne dans la base principale. Et si une modif doit être faite elle ne sera faite qu'une seule fois.

Qu'en pensez vous ?

Merci d'avance