Feed4j - Parser RSS haute performance pour Java

Bonjour à tous,

Je vous présente Feed4j v1.0, une bibliothèque Java moderne et performante dédiée au parsing des flux RSS, conçue pour un usage en production.

🎯 Fonctionnalités principales

  • Parsing multi-threadé avec pool de threads configurable pour des performances optimales
  • Système de cache intelligent pour éviter les appels réseau redondants
  • Support multi-formats de dates (RFC 1123, ISO, et autres formats courants)
  • Configuration flexible - personnalisation des timeouts, User-Agent, validation XML
  • Résilience aux erreurs - poursuite du traitement même en cas d'échec sur certains éléments
  • Thread-safe et prêt pour la production


📦 Utilisation rapide

Utilisation basique :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import com.axeldev.Feed4j;
import com.axeldev.RssFeed;
import com.axeldev.RssItem;

// Création de l'instance avec configuration par défaut
Feed4j feed4j = new Feed4j();

// Parsing d'un flux RSS
RssFeed feed = feed4j.ReadFeed("https://feeds.bbci.co.uk/news/rss.xml");

if (feed != null) {
    for (RssItem item : feed.getItems()) {
        System.out.println(item.getTitle() + " - " + item.getPubDate());
    }
}
Configuration avancée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
import com.axeldev.Feed4jConfig;

// Configuration personnalisée
Feed4jConfig config = new Feed4jConfig()
    .setMaxThreads(8)                    // 8 threads pour le parsing parallèle
    .setCacheDurationMs(600000)          // Cache de 10 minutes
    .setConnectTimeout(15000)            // Timeout de connexion 15s
    .setUserAgent("MonApplication/1.0"); // User-Agent personnalisé

Feed4j feed4j = new Feed4j(config);
RssFeed feed = feed4j.ReadFeed("https://example.com/feed.xml");
🏗️ Points d'architecture notables

  • Traitement parallèle des éléments utilisant ExecutorService
  • Cache basé sur ConcurrentHashMap avec TTL (Time To Live)
  • Parsing SAX avec fallback DOM pour la fiabilité
  • API de configuration fluent pour une configuration aisée
  • Gestion d'erreurs complète avec logging détaillé


📊 Performances

  • Mise à l'échelle automatique du nombre de threads selon les cœurs CPU et la taille du flux
  • Cache intelligent réduisant significativement la charge réseau
  • Gestion gracieuse des flux RSS malformés sans casser le traitement global


🔧 Prérequis techniques

  • Java 11 ou supérieur
  • Aucune dépendance externe (Java pur)
  • Construction avec Maven


💡 Avantages par rapport aux autres librairies

Feed4j se distingue par son focus sur :
  • Les performances grâce au traitement parallèle
  • La fiabilité avec une gestion d'erreurs exhaustive
  • La flexibilité avec des options de configuration étendues
  • La simplicité - facile à utiliser mais puissante quand nécessaire


📚 Documentation et exemples

Une documentation complète, des exemples détaillés et la référence API sont disponibles sur :
GitHub : https://github.com/angle-droit/Feed4j

🤔 Avis et suggestions

Qu'en pensez-vous de cette approche ? Des suggestions d'améliorations ?