Modifier le fichier

Module de statistiques

Présentation

Le module statistiques se base des technologies existantes du core. Lorsque un indicateur est collecté, un message spring-integration est diffusé sur la file channel.core.out.
Une nouvelle file nommée "channel.in.statistics" duplique les messages channel.core.out via un bridge.
Les messages sont routés vers un service activator (le logger) afin d'être matérialisés sur disque ou dans une table de la base de données.

Format de sortie des indicateurs

Le format de sortie est décrit dans cette page

Le module met à disposition le service StatisticsService qui permet de générer des entêtes standardisés. La méthode initMessageHeaders permet d'initiliser de manière standardisée les entêtes. La méthode retourne une map d'entêtes nécessaires aux indicateurs

    ...
final Map<String, Object> headers=statisticsService.initMessageHeaders("NOM_DU_MARQUEUR");
        ...

L'envoi de l'indicateur est réalisé via le service ServiceCorePublisher

    ...
private ServiceCorePublisher publisher;
        ...
        publisher.publish(payload,TARGET_MARKER_XXXXX,null,null,headers);
        ...

La valeur TARGET_MARKER_XXXXX est une chaine de caractère permettant d'aiguiller le message vers un service activator adapté.

Selection d'un endpoint

Les différents message spring integration sont envoyés vers un nouveau channel channel.in.statistics via un bridge.
Un routeur permet de répartir les message vers deux endpoints fournis par le produit.

  1. Le StatisticsLogger qui permet d'écrire dans un fichier de log (type logback). Pour inscrire un indicateur dans le fichier de log, il suffit de valoriser l'entête "target" du message avec la constante StatisticsService.TARGET_MARKER_LOGGER
  ...
      publisher.publish(payload,StatisticsService.TARGET_MARKER_LOGGER,null,null,headers);
      ...
  1. Le StatisticEventsService qui permet d'écrire des indicateurs dans une table de donnée (table STATISTIC_EVENTS).
    Cette table a vocation à cumuler les indicateurs d'action avant de procéder à une aggrégation (comptage) et à leur extraction.
    Pour inscrire un indicateur dans la table STATISTIC_EVENTS, il suffit de valoriser l'entête "target" du message avec la constante StatisticsService.TARGET_MARKER_EVENT
  ...
      publisher.publish(payload,StatisticsService.TARGET_MARKER_EVENT,null,null,headers);
      ...