04.09.2015, 11:25
Hallo zusammen,
ich hab ein Programm, dass als Server für die Reporterstellung von Produktionsdaten läuft. In meinem Client schreibe ich dabei Seriennummern in eine Datenbank, das Serverprogramm holt sich die Seriennummern dort ab und erstellt mir die Reports.
Der Server läuft dabei als queued state machine. In meinem Producer habe ich einen Timeout-Case, der alle 5 Sekunden auf die Datenbank zugreift und sich neue Seriennummern abholen soll. Anschließend schiebe ich die Seriennummern mit ein paar Zusatzinformationen in meine Queue. Heute ist folgendes Phänomen aufgetreten: Ich benutze als Speicherpfad der Reports unter anderem den Zeitstempel, an dem der Timeout-Case auf die Datenbank zugreift und die Seriennummern holt. Bei sehr vielen Seriennummern hat sich mitten in der Reporterstellung der Zeitstempel geändert, obwohl ich immer den gleichen Wert in die Queue schreibe (siehe Bild im Anhang).
Meine Ursachenvermutung ist gleichzeitig meine Frage: Was passiert beim mit dem Timeout-Case, wenn während der Abarbeitung des Programms innerhalb des Case ein erneuter Timeout auftritt? Datenfluss würde ja eigentlich bedeuten: zuerst wird der Programmcode abgearbeitet, danach wird auf das erneute Timeout reagiert. Meine Vermutung ist aber, dass das genau nicht passiert, sondern einfach der Timeout-Case erneut ausgeführt wird und sich damit auch der Zeitstempel ändert. Kann jemand meine Vermutung bestätigen?
Gruß
Daniel
ich hab ein Programm, dass als Server für die Reporterstellung von Produktionsdaten läuft. In meinem Client schreibe ich dabei Seriennummern in eine Datenbank, das Serverprogramm holt sich die Seriennummern dort ab und erstellt mir die Reports.
Der Server läuft dabei als queued state machine. In meinem Producer habe ich einen Timeout-Case, der alle 5 Sekunden auf die Datenbank zugreift und sich neue Seriennummern abholen soll. Anschließend schiebe ich die Seriennummern mit ein paar Zusatzinformationen in meine Queue. Heute ist folgendes Phänomen aufgetreten: Ich benutze als Speicherpfad der Reports unter anderem den Zeitstempel, an dem der Timeout-Case auf die Datenbank zugreift und die Seriennummern holt. Bei sehr vielen Seriennummern hat sich mitten in der Reporterstellung der Zeitstempel geändert, obwohl ich immer den gleichen Wert in die Queue schreibe (siehe Bild im Anhang).
Meine Ursachenvermutung ist gleichzeitig meine Frage: Was passiert beim mit dem Timeout-Case, wenn während der Abarbeitung des Programms innerhalb des Case ein erneuter Timeout auftritt? Datenfluss würde ja eigentlich bedeuten: zuerst wird der Programmcode abgearbeitet, danach wird auf das erneute Timeout reagiert. Meine Vermutung ist aber, dass das genau nicht passiert, sondern einfach der Timeout-Case erneut ausgeführt wird und sich damit auch der Zeitstempel ändert. Kann jemand meine Vermutung bestätigen?
Gruß
Daniel