2012-07-16 1 views
4

J'ai une base de données q/kdb où l'une des colonnes contient des heures. Je veux prendre les données dans chaque rangée, et l'envoyer avec le rendez-vous de tibco au moment indiqué dans la colonne de temps de chaque rangée. Quel serait le meilleur moyen de le faire?Extraire les heures d'une base de données et envoyer des messages à ce moment-là

Il semble possible d'utiliser les classes java timer et delay, ou peut-être avec des composants tiers. Note: la partie complexe ici est que je n'envoie pas à intervalle régulier, je dois aller à la base de données pour déterminer l'heure à laquelle chaque message est envoyé. Ainsi par exemple si les deux premières valeurs de la colonne sont 14: 00: 00.000 14: 30: 00.000 alors le premier message sera envoyé à 14h et le second sera envoyé à 14h30.

Merci!

Répondre

2

Prenez oeil à ScheduledExecutorService, il a une méthode schedule(Runnable command, long delay, TimeUnit unit) qui pourrait faire ce que vous voulez

+0

cela semble être une option assez bonne. Bien qu'idéalement ce que je cherche est d'avoir quelque chose d'exécution à un moment donné. Donc, par exemple, si la base de données indique 14h je voudrais l'exécuter à 14 heures. Comme dans cette méthode, je devrais définir un délai, qui pourrait ne pas être très précis. – Lemonio

+0

Il vous donnera une précision en nanosecondes, donc à moins que vous ne vouliez que l'événement se produise exactement @ 02: 00: 00.00, vous devriez être capable de calculer un délai dans une marge d'erreur raisonnable. Alternativement, vous pouvez google pour une mise en œuvre du travail de crone tels que http://www.sauronsoftware.it/projects/cron4j/ ... J'ai trouvé un numéro listé. – MadProgrammer

+0

J'ai utilisé ScheduledExecutorService dans le passé avec beaucoup de succès, planifier des travaux comme près de cinq minutes jusqu'à jours dans le futur, mais c'est juste moi – MadProgrammer

Questions connexes