2010-08-16 16 views
6

Je cherche une API WorkQueue offrant les caractéristiques suivantes:Existe-t-il une API Java WorkQueue sophistiquée?

  • java.util.Queue compatibles
  • offres (en option) Set-sémantique
  • unique et le traitement par lots
  • concurrency (bien sûr)
  • ordonnancement
  • différentes politiques de traitement
    • attente jusqu'à la prochaine exécution prévue
    • pré-processus
    • , si la taille des lots a rencontré
    • traitement retardé (un minimum de temps en file d'attente, avant d'être traités)
  • persistance (en option)

Il sont beaucoup d'implémentations intéressantes dans le jdk, par exemple java.util.DelayQueue que je pourrais utiliser. Je voulais juste m'assurer que je ne réinvente pas la roue.

Répondre

2

Êtes-vous toujours à la recherche d'une réponse à accepter?

Je pense que vos besoins seraient mieux satisfaits en utilisant l'infrastructure d'exécuteur java.util.concurrent. Voir l'API (here's a good start). Il y a une excellente communauté de soutien, vous pouvez le trouver au concurrency-interest web site. Si vous êtes dans les arbres morts, Java Concurrency in Practice (JCiP) fournit une excellente ressource.

Le framework exécuteur vous permet de créer des tâches (sous la forme de Runnables ou Callables), fournit plusieurs schémas pour synchroniser ou ordonner des tâches les unes par rapport aux autres. Enfin, l'infrastructure émergente ForkJoin (FJ) est tout à fait utilisable et peut correspondre à vos besoins. L'API est here, good paper is here et introductory article here.

Espérons que cela aide.

JA

3

Jetez un oeil à Quartz Job Scheduler API

Quartz Caractéristiques: http://www.quartz-scheduler.org/overview/features.html

Je ne suis pas sûr de sa compatibilité java.util.Queue. Mais il fournit la plupart des fonctionnalités liées à la planification et à l'exécution des tâches.

+1

Quartz est pour la planification des tâches en retard, ce n'est pas ce que je cherchais.En ce qui concerne l'ordonnancement et le délai dont j'ai besoin, je vais certainement rester avec ScheduledExecutor de java qui fournit une API bien meilleure que le quartz. – whiskeysierra

0

Bien qu'il ne possède aucune fonctionnalité de planification, le JDK a java.util.concurrent.SynchronousQueue, ce qui peut être utile.

1

Réponse courte et claire - no. Vous devez déployer votre propre ou vous allez juste servir de testeur gratuit pour les expériences de quelqu'un d'autre. Donc, au moins, vous passerez du temps à faire un système exactement pour vos besoins, en connaissant toutes les parties essentielles et en étant en contrôle total au lieu de prendre en charge une dépendance importante et inconnue.