Trigger PostgreSQL

Trigger PostgreSQL - SQL/NoSQL - Programmation

Marsh Posté le 22-06-2015 à 17:21:54    

Bonjour à tous  :hello:  
 
Je réalise actuellement un projet mettant en place un système multi agents (JADE, Java) et une base de données PostgreSQL.  
Cependant il y a des choses que je n'arrive pas à réaliser:
 
Dans ma base de données j'ai une table appelée "devices" qui contient une liste de capteurs (une centaine), une colonne correspond à la valeur (de type integer) qui a été relevé par le capteur. Cette valeur est mise à jour par une source externe.
Je souhaitais, lorsque une de ces valeurs change d'état (les valeurs évoluent en permanence), réaliser un trigger qui permet d'envoyer une notification de l'événement à un de mes agents. Idéalement, que PostgreSQL m'envoie la ligne complète du capteur (dont la valeur à changée) vers mon agent.
 
Pour l'instant j'ai tenté de faire quelque chose avec ceci:
 

Code :
  1. CREATE  FUNCTION trigger_notify() RETURNS trigger AS
  2. $$ BEGIN
  3. perform pg_notify('nom_evenement', row_to_json(NEW)::text);
  4. return new;
  5. END
  6. $$ language plpgsql;


Ce que je trouve assez pénible (à mes yeux) c'est qu'il est impossible de faire des tests élémentaires à ce niveau: Je ne sais pas si mon trigger fonctionne correctement, ou si le renvoi d'informations se fait, ou si mon agent ne comprend pas ce qu'il reçoit.  
 
Actuellement j'évalue les mises à jours des valeurs par polling, c'est à dire que mes agents réalisent des requêtes toutes les 500ms et ce n'est clairement pas la solution à retenir (c'est pour dépanner en attendant). J'ai fait un essai pour tester la durée de vie du système avec le polling, ça tient 4789 requêtes vers ma base de données et puis je perds la connexion avec... Cependant il reste toujours accessible via PgAdmin III ou via une console avec les commandes psql.
 

Code :
  1. org.postgresql.util.PSQLException: La tentative de connexion a échoué.


Ce qui ne m'avance pas beaucoup car les recherches google liées à ce problème sont des personnes qui n'ont réussi aucune connexion avec leur BDD, or moi j'arrive à m'y connecter correctement jusqu'à un certain moment.
 
Mon environnement de travail:
Windows 8.1 Pro
Eclipse Luna
PostgreSQL 9.4
 
Avez vous des pistes à suivre?


Message édité par DarkHorse le 22-06-2015 à 17:27:52

---------------
Corvette C5 Coupé owner
Reply

Marsh Posté le 22-06-2015 à 17:21:54   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed