2010-09-02 2 views
2

Nous avons un système de messagerie personnalisé écrit en Java, et je veux mettre en œuvre une fonction de base de chargement/compression qui, en charge lourde, va agréger un ensemble de réponses push dans une seule réponse push .QoS générique batch et compression de messages en Java

essentiellement:

  • si nous détectons 3 messages ont été envoyés dans le passé deuxième départ puis les réponses de dosage et programmer une minuterie pour le feu en 5 secondes
  • La minuterie regroupera toutes les réponses des messages reçus dans le 5 prochaines secondes dans un seul message

Je suis sûr que cela a été mis en œuvre avant de chercher le meilleur exemple en Java. Je ne cherche pas une couche de messagerie complète, juste la base de détecter les messages par seconde et planifier une tâche (évidemment, je peux facilement écrire moi-même je veux juste le comparer avec tous les algorithmes existants pour s'assurer que je ne manque pas cas de bord ou que j'ai simplifié le problème autant que possible). Existe-t-il de bons exemples open source de construction d'implémentations de base de batch/throttling/compression de QoS de base?

Répondre

0

Nous utilisons un mécanisme très similaire pour une charge élevée.

* Agréger les messages sur un intervalle donné * Envoyer une liste au lieu d'un seul message par la suite. * Commencez à agréger à nouveau. * Si vous utilisez un système de messagerie transactionnel comme JMS, vous risquez de rencontrer des problèmes car votre implémentation ne pourra pas envoyer à l'intérieur de la transaction JMS pour qu'elle continue à être agrégée. Selon la taille de votre structure de données pour contenir les messages, cela peut manquer d'espace. Si vous avez de très longues transactions envoyant beaucoup de messages cela peut poser un problème. * L'envoi d'un message de cette manière se produira de manière asynchrone car un thread différent enverra le message et le thread appelant la méthode send() ne le mettra que dans la structure de données. * Si l'on s'en tient à l'exemple JMS, vous devez garder à l'esprit que leur façon de consommer les messages est également modifiée par cette approche. Parce que vous recevrez la liste des messages de JMS comme un seul message. Ainsi, une fois que vous avez validé ce message JMS, vous avez validé la liste complète des messages. Vous devriez vérifier si ceci est un problème pour vos besoins.