Anfang des InhaltsbereichsFunktionsdokumentation Parallelisieren von Requests Dokument im Navigationsbaum lokalisieren

Verwendung

Es ist möglich, Requests parallel abzusetzen und auf alle Antworten gleichzeitig zu warten. Die Methode LISTEN dient dann zum Ermitteln, welcher Request nun beantwortet wurde.

Dies lohnt sich, wenn viele Requests an verschiedene Server abgesetzt werden, deren Antwortzeit stark differiert.

Aktivitäten

Beispiel

Man erweitert das obige Programm um die folgenden Zeilen:

Zusätzliche Parameter, ob man mit der Methode LISTEN arbeiten will, und wie viele Requests versendet werden sollen:

parameters: listen type c default space,

times type i default '1',

Nun wird auf die Antworten der Requests gewartet. Sie werden in der Reihenfolge entgegengenommen, in der sie vom Server zurückkommen.

*Empfangen mit listen (Parallelisierung von #times Requests)

do times times.

  if not listen is initial.

    call method client->listen

      receiving client = cclient

      exceptions http_communication_failure  = 1

                 http_no_open_connection     = 2

                 others                      = 3.

  if sy-subrc <> 0.

    call method client->get_last_error

      importing code = subrc

                message = dummy.

    write: / listen’,

           / 'code: ', subrc, 'message: ', dummy.

    exit.

  endif.

 

Die eintreffenden Antworten werden wieder den Requests zugeordnet.

* Zuordnung der Responses zu den Requests

* wenn es mehr Requests gibt, alle Antworten aufnehmen

    client = cclient.

    call method client->receive

exceptions http_communication_failure  = 1

           http_invalid_state          = 2

           http_processing_failed      = 3

           others                      = 4.

  if sy-subrc <> 0.

    call method client->get_last_error

       importing code = subrc

                 message = dummy.

    write: / 'communication_error( receive )',

           / 'code: ', subrc, 'message: ', dummy.

    exit.

  endif.

...

enddo.

Dann kann eingegeben werden, wie oft ein Request abgesetzt werden soll (Parameter times), und in der Ausgabe sieht man, in welcher Reihenfolge die Antworten empfangen wurden. Dies muss nicht die Reihenfolge sein, in der die Requests abgeschickt wurden.

Achtung

Der obige ABAP-Code soll nur ein einfaches Beispiel darstellen, es handelt sich nicht um eine Vorlage zum professionellen Arbeiten.

 

 

Ende des Inhaltsbereichs