[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Dec 2011
    Beiträge
    11

    Alternative zu DTAQ

    Hallo,

    wir benötigen eine Alternative zu DataQueues für die Nachritenübertragung von RPG-Programmen zu einem Java-Server. Leider reichen die 64512 Bytes pro Message nicht immer aus und eine bereits erfolgte Minimierung des Datenaufkommens hat das Problem nur hinaus geschoben. Für den umgekehrten Weg ist die DTAQ völlig ausreichend.

    Derzeit schreiben mehrere RPG-Programme in die gleiche Queue, deshalb wäre eine Kommunikation über einen USRSPC ungleich aufwändiger hinsichtlich der Synchronisation der Zugriffe usw.

    Unsere letzte Idee war die Verwendung von Sockets für die Datenübertragung. Leider müsste dann für jede gestartete Anwendung ein Port geöffnet werden. Zusätzlich wird je ein weiterer Port benötigt, um mit diesem Port zu kommunizieren. Da die Anzahl der Nutzer derzeit nicht abzuschätzen ist, wäre es möglich, dass uns hier irgendwann die Ports ausgehen ...

    Habt ihr vielleicht noch andere Ideen, wie man das anstellen könnte?

    Gruß
    Klaus

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Nimm eine SQL-Tabelle mit einem LOB-Feld (BLOB, CLOB) und einem eindeutigen Keyfeld (Identity oder Long-Zähler).

    Schreibe die Daten in die PF mit Schlüssel und sende den Schlüssel an die DTAQ (als Dispatcher oder Wecker).

    Der Empfänger liest die DTAQ, holt sich die Daten per SQL aus der Tabelle und löscht den Eintrag.

    Was anderes fällt mir auf die Schnelle auch nicht ein.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... in Paketen senden! Eine einfache Implementierung kann man sich in meiner Open Source ArdGate ansehen.

    D*B

    Zitat Zitat von meini Beitrag anzeigen
    Hallo,

    wir benötigen eine Alternative zu DataQueues für die Nachritenübertragung von RPG-Programmen zu einem Java-Server. Leider reichen die 64512 Bytes pro Message nicht immer aus und eine bereits erfolgte Minimierung des Datenaufkommens hat das Problem nur hinaus geschoben. Für den umgekehrten Weg ist die DTAQ völlig ausreichend.

    Derzeit schreiben mehrere RPG-Programme in die gleiche Queue, deshalb wäre eine Kommunikation über einen USRSPC ungleich aufwändiger hinsichtlich der Synchronisation der Zugriffe usw.

    Unsere letzte Idee war die Verwendung von Sockets für die Datenübertragung. Leider müsste dann für jede gestartete Anwendung ein Port geöffnet werden. Zusätzlich wird je ein weiterer Port benötigt, um mit diesem Port zu kommunizieren. Da die Anzahl der Nutzer derzeit nicht abzuschätzen ist, wäre es möglich, dass uns hier irgendwann die Ports ausgehen ...

    Habt ihr vielleicht noch andere Ideen, wie man das anstellen könnte?

    Gruß
    Klaus
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  4. #4
    Registriert seit
    Jun 2001
    Beiträge
    2.044
    Bei uns malt der Java Job den Gui Bilschirm.
    Damit er schon mal anfangen kann, bevor die letzte Info aus dem grünen PGM ermittelt wurde, schreiben wir mehrere Happen. In der Datendefinition gibt es ein 'ENDE-DER-DATEN' Kennzeichen. Daran erkennt das Java Pgm, das nix mehr kommt.
    Umgekehrt genauso, wobei da selten mehr als ein Happen kommt.
    Robi

    ok, die Happen heisen Pakete und Dieter war schneller
    Last edited by Robi; 25-09-12 at 09:08. Grund: Dieter war schneller
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  5. #5
    Registriert seit
    Dec 2011
    Beiträge
    11
    Vielen Dank für eure Vorschläge.

    Der Vorschlag mit dem CLOB wäre wohl der einfachste, nur habe ich Zweifel ob ich das so umsetzen darf. Ich musste ja sogar schon um Varchar-Felder in der Datenbank kämpfen :/

    Wenn unser Java-Spezialist aus dem Urlaub zurück ist, werden wir evaluieren, welcher Ansatz für ihn am Besten wäre.

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Solange nur ein Empfänger und Sender auf der DTAQ liegt ist Paketierung kein Problem.
    Sind mehrere Sender beteiligt kommen die Pakete durcheinander es sei denn man macht während der Paketierung einen ALCOBJ und hinterher eben einen DLCOBJ.

    Hängen mehrere Empfänger auf einer DTAQ (Verteilung auf mehrere Prozesse), dann ist Paketierung nicht möglich, da ja die DTAQ im Roundrobbin-Verfahren gelesen wird bekommt der 1. Empfänger den 1. Satz und der 2. Empfänger den 2. Satz.

    Wenn ihr euch für eine PF entscheidet ist ja ggf. auch auf die DTAQ zu verzichten.

    Und was so neumodischen Kram wie VARCHAR angeht, wieso nehmt ihr dann schon Java ?

    PS:
    Und was VARCHAR bzw. CLOB angeht, bei der DTAQ werden in deinem Fall immer 64KB (Satzlänge) übertragen egal ob voll oder nicht, bei VARCHAR nur das was da ist.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... wer sagt denn sowas? Schau dir mal die Paketierung in ArdGate an. (BTW: dann würde das komplette TCPIP auch nicht funzen...)

    D*B

    Zitat Zitat von Fuerchau Beitrag anzeigen
    Solange nur ein Empfänger und Sender auf der DTAQ liegt ist Paketierung kein Problem.
    Sind mehrere Sender beteiligt kommen die Pakete durcheinander es sei denn man macht während der Paketierung einen ALCOBJ und hinterher eben einen DLCOBJ.

    Hängen mehrere Empfänger auf einer DTAQ (Verteilung auf mehrere Prozesse), dann ist Paketierung nicht möglich, da ja die DTAQ im Roundrobbin-Verfahren gelesen wird bekommt der 1. Empfänger den 1. Satz und der 2. Empfänger den 2. Satz.

    Wenn ihr euch für eine PF entscheidet ist ja ggf. auch auf die DTAQ zu verzichten.

    Und was so neumodischen Kram wie VARCHAR angeht, wieso nehmt ihr dann schon Java ?

    PS:
    Und was VARCHAR bzw. CLOB angeht, bei der DTAQ werden in deinem Fall immer 64KB (Satzlänge) übertragen egal ob voll oder nicht, bei VARCHAR nur das was da ist.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  8. #8
    Registriert seit
    Dec 2011
    Beiträge
    11
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Solange nur ein Empfänger und Sender auf der DTAQ liegt ist Paketierung kein Problem.
    Genau hier liegt ja das Problem. Es gibt mehrere Sender-Programme und mehrere Java-Threads als Empfänger.
    Gundsätzlich sollte es aber möglich sein, dass die Fragmente anhand einer eindeutigen ID und einer Sequenznummer über die Threads hinweg wieder zusammen gesetzt werden.

    Zitat Zitat von Fuerchau Beitrag anzeigen
    Und was so neumodischen Kram wie VARCHAR angeht, wieso nehmt ihr dann schon Java ?
    Aus dem einfachen Grund, weil RPG nativ keine WebSockets handeln kann. Das alles selbst zu implementieren wäre dann doch ein wenig zu viel Overhead
    Aber es scheint Besserung in Sicht zu sein: letztlich hab ich sogar eine Tabelle mit NULL-fähigen Feldern erstellt

  9. #9
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Zitat Zitat von meini Beitrag anzeigen
    Aber es scheint Besserung in Sicht zu sein: letztlich hab ich sogar eine Tabelle mit NULL-fähigen Feldern erstellt
    ... auch das geht schon seit mehr als zehn Jahren.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Wenn du mehrere Threads als Empfänger hast, würde ich das dann auf einen Dispatcher-Thread umstellen, also nur noch einen Empfänger.
    Der stellt dann die Pakete wieder zusammen und leitet dann das vollständige Paket an eine interne Thread-Queue weiter.
    Diese nehmen sich dann wieder nach Roundrobbin die vollständigen Einträge aus der Queue.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  11. #11
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... dieweil die Worker Threads im allgemeinen nicht stateless sind, bietet sich da eher ein Worker (-Thread) pro Client an...
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. DTAQ Attribute auslesen
    By kuempi von stein in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 28-11-06, 05:48
  2. SQL Alternative Namen
    By andreas.lundschien in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 27-09-06, 10:56
  3. Antworten: 2
    Letzter Beitrag: 22-09-04, 19:03
  4. ASP in DTAQ?
    By DEVJO in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 24-08-04, 09:34
  5. SAVSYS alternative IPL-Einheit
    By tomikra in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 10-05-04, 14:21

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •