6

Ich bin für eine Workqueue API bietet die folgenden Features suchen:Gibt es eine ausgeklügelte Java WorkQueue API?

  • java.util.Queue kompatibel
  • Angebote (optional) Set-semantischen
  • Einzel- und Stapelverarbeitung
  • Concurrency (natürlich)
  • Scheduling
  • unterschiedliche Verarbeitungsrichtlinien
    • Wartezeit bis zum nächsten geplanten Ausführungs
    • Vorprozess, wenn Losgröße
    • verzögerte Verarbeitung erfüllt (Mindestzeit in der Warteschlange, bevor in Bearbeitung)
  • Persistenz (optional)

Es sind viele interessante Implementierungen in der jdk, z java.util.DelayQueue was ich verwenden könnte. Ich wollte nur sicherstellen, dass ich das Rad nicht neu erfinde.

Antwort

2

Suchen Sie noch eine Antwort zu akzeptieren?

Ich denke, Ihre Bedürfnisse würden am besten mit java.util.concurrent Executor Framework erfüllt werden. Siehe die API (here's a good start). Es gibt eine exzellente Support-Community, die Sie unter concurrency-interest web site finden können. Wenn Sie in toten Bäumen sind, bietet Java Concurrency in Practice (JCiP) eine ausgezeichnete Ressource.

Das Executor-Framework ermöglicht das Erstellen von Aufgaben (in Form von Runnables oder Callables), bietet mehrere Schemas zum Synchronisieren oder anderweitigen Ordnen von Aufgaben in Bezug aufeinander.

Schließlich ist die aufkommende ForkJoin (FJ) -Infrastruktur ziemlich brauchbar und kann Ihren Anforderungen entsprechen. API ist here, ein good paper is here und ein introductory article here.

Hoffe, das hilft.

JA

3

Werfen Sie einen Blick auf Quartz Job Scheduler API

Quarz Eigenschaften: http://www.quartz-scheduler.org/overview/features.html

Ich bin über seine java.util.Queue Kompatibilität nicht sicher. Aber es bietet die meisten Funktionen im Zusammenhang mit der Jobplanung und -ausführung.

+1

Quarz ist für die Planung verzögerter Aufgaben, das ist nicht das, wonach ich gesucht habe.In Bezug auf die Planung und die Verzögerung, die ich brauche, werde ich auf jeden Fall mit javas "ScheduledExecutor" bleiben, die eine bessere API als Quarz bietet. – whiskeysierra

0

Obwohl es keine Planungsfunktionalität hat, hat das JDK java.util.concurrent.SynchronousQueue, die nützlich sein kann.

1

Kurze und direkte Antwort - Nr. Sie müssen Ihre eigenen ausrollen, oder Sie werden nur als kostenlose Tester für jemandes Experimente dienen. So verbringen Sie zumindest Zeit damit, ein System genau nach Ihren Bedürfnissen zu erstellen, alle Kernteile zu kennen und die volle Kontrolle zu haben, statt große und unbekannte Abhängigkeiten zu übernehmen.