Ich benutze die ColdFusion-Gateways, um eine große Anzahl von Aktionen auszulösen und zu vergessen. Um dies zu tun, habe ich eine Schleife, die eine Abfrage mit einer SendGatewayMessage()
am Ende durchläuft. Die Abfrage, die ich durchlaufen kann jedoch sehr groß werden. (100.000 Datensätze)Eine Warteschlange vor der Warteschlange
Um zu verhindern, dass Aktionen verloren gehen, habe ich die Größe der Warteschlange und die Anzahl der Threads erhöht.
Weil Aktionen immer noch verloren, ich vor den SendGatewayMessage()
wie eine Schleife enthalten, so:
<cfloop condition="#gatewayService.getQueueSize()# GTE #gatewayService.getMaxQueueSize()#">
<cfset guardianCount = guardianCount+1>
</cfloop>
<cflog file="gatewayGuardian" text="#i# waited for #guardianCount# iterations. Queuesize:#gatewayService.getQueueSize()#">
<cfset SendGatewayMessage("EventGateway",eventData)>
(Mehr Infos auf der Gateway Klasse here)
Dies ist mehr oder weniger akzeptabel, da kann ich Englisch: www.mjfriendship.de/en/index.php?op...39&Itemid=32 Ich hoffe, dass der gesamte Prozess schneller und mit weniger Druck auf die Ressourcen des Servers laufen wird Server.
Irgendwelche Vorschläge? Irgendwelche Gedanken über die Konsequenzen einer weiteren Erhöhung der Warteschlangengröße?
Ich würde nach Möglichkeiten suchen, um die Menge der Daten zu reduzieren, die Sie verarbeiten. –
@DanBracuk Das wäre natürlich optimal. Aber die Menge der zu verarbeitenden Daten ist nicht wirklich verhandelbar ... Ich könnte versuchen, es zu zerschneiden, aber die Hauptsache, die ich versuche, ist die Verarbeitung so vieler Datensätze möglich mit einer Anfrage, die so kurz wie möglich ist .... – Sander
Wenn Sie Gateway GatewayService wirklich nicht ändern können, gibt es wirklich nicht viel, was Sie hier tun können. Sie könnten die '' ändern, aber ich bezweifle, dass das einen großen Unterschied machen würde. –