IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Des suggestions pour un modèle de programmation par événements ?


Sujet :

Langage Java

  1. #1
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut Des suggestions pour un modèle de programmation par événements ?
    Bonjour à toutes et à tous
    Il y a quelque temps de ça j'ai exploré un modèle de programmation par événement en créant un petit langage "ad hoc" (D.S.L) en Groovy.
    Tout ça est bien gentil mais comme une réalisation sérieuse approche dans mon planning je me pose la question d'un choix de modèle de programmation Java plus "standard".

    D'abord une petite idée du problème général: sur un réseau de micro-pcs pilotant des matériels j'ai un code "chef d'orchestre" qui demande à certains matériels d'exécuter des actions (supposons que l'ordre soit "ferme une vanne")
    pendant que cet ordre est en cours d'exécution et que le chef d'orchestre en attend le résultat, des événements surviennent et sont notifiés au chef d'orchestre (" l'alim. électrique est en train de lâcher", "un tremblement de terre se déclenche" - ce n'est pas un blague on est en zone très sismique - , etc...). Il faut donc que le chef prenne certaines décisions dans le contexte d'une exécution.

    Dans ma maquette Groovy j'avais donc une définition de contexte d'exécution associant des actions à des événements. On gère une queue d'événements (avec des événements plus prioritaires que d'autres) qui contient des codes qui sont exécutés en séquence. Quand on reçoit le code de fin d'exécution on a des opérations spéciales de vidange de la queue ... et on recommence (bon c'est une description très simplifiée).

    Auriez vous à l'esprit quelque chose qui ressemblerait à ce genre de mécanisme en Java "pur" (ou avec une librairie -presque- standard) ? ... je regarde Java Rx mais je n'arrive pas trop à le faire correspondre à mes besoins .... (mais p.e. m'y prends-je mal).

    Merci pour toute suggestion ou piste.
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 120
    Points : 133
    Points
    133
    Par défaut
    Est ce que les message driven beans ne correspondraient pas à votre cas.
    En résumé, chaque message arrive dans une queue ou un topic (la différence est simplement que le topic notifie tous les subscribers alors que la queue est consomée que par un seul consumer)

    Vous pouvez regarder activemq.

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Pareil, ça me fait penser à une queue JMS la description, avec le chef d'orchestre qui, au fur et à mesure de la lecture des event lance des actions, action qui peuvent très bien envoyer leur résultat sous forme d'event, histoire de ne pas bloquer ton chef

    Le plus dur c'est d'éviter l'effet "boule de neige" si trop d'event sont gérés en même temps.

  4. #4
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    je regarde d'un peu plus près activemq
    pour JMS: initialement le projet avait une couche de message JMS, d'un point de vue du transfert de messages je suis passé à une implantation Jgroups (pour un tas de raisons)
    il y une distinction entre la gestion d'envoi/reception des messages et les traitements associés à des événements (qui résultent de la réception de message mais aussi d'évènements générés dans la JVM locale - y compris par le code du chef d'orchestre lui même). Il y a une gestion sophistiquée de la queue avec un contexte global par "script" et un contexte lié à une action en cours.
    J'ai déjà écrit une maquette qui fait ça mais ce qui m'inquiète c'est le "modèle" à offrir aux programmeurs (c'est pas tous des javaïstes ceinture noire 4° dan) il faut leur offrir une vision simple à comprendre, à formuler, à débuguer ...
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  5. #5
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Est-ce que tu as regardé Apache Storm ? ou Apache Camel ?
    Il y a aussi Akka.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/03/2014, 19h43
  2. Réponses: 9
    Dernier message: 14/08/2012, 16h38
  3. algorithme de lissage pour le modèle 3D generer par marching cubes
    Par demha dans le forum Traitement d'images
    Réponses: 1
    Dernier message: 12/05/2011, 14h42
  4. Réponses: 5
    Dernier message: 22/11/2007, 20h12
  5. Réponses: 1
    Dernier message: 15/09/2006, 16h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo