2017-11-02 2 views
1

Ich habe einen REST-Service, der ein json simple {message: "ok"} zurückgibt. Wenn ich Respond Mediator verwende, wird die weitere Verarbeitung einer Nachricht gestoppt und die Nachricht zurück an den Client gesendet.Wie vermeidet man, den nächsten Mediator mit Antwortmediator in WSO2 EI zu ignorieren?

Ich muss Antwort an Client senden und dann Task asynchron ausführen, aber wenn ich es verwende, ignoriert den nächsten Aufruf einer Sequenz oder eines Endpunkts.

Wie können Sie synchron antworten (Antwort auf den Client) und dann einen Dienst aufrufen, ohne dass der Mediator den nächsten Mediator ignoriert?

danke;

+0

Haben Sie versucht, Ihre Nachricht zu klonen (Klon Vermittler verwendet wird), in einem des Klons antworten und der andere weiter Ihre Verarbeitung? – Nicolas

+0

Hallo, vielen Dank für Ihre Antwort, ich muss keine Nachricht klonen, nur auf Client reagieren und dann asynchron folgen. –

+0

Sendet nur eine Antwort an den Client und führt dann einen asynchronen Block aus (z. B. asynchron), z. B. send mediator und finish. –

Antwort

2

Ich konnte die Herausforderung lösen. effektiv Clone Mediator nicht nur Klon Nachricht, es neue neue Leben neue Nachricht geben.

<api xmlns="http://ws.apache.org/ns/synapse" name="porticApiAsyn" context="/test"> 
<resource methods="POST" url-mapping="/asyn"> 
    <inSequence> 
    <log> 
     <property name="message" value="asyn"/> 
    </log> 
    <payloadFactory media-type="json"> 
     <format>{"message":"asyn test"}</format> 
     <args/> 
    </payloadFactory> 
    <clone continueParent="true" sequential="true"> 
     <target sequence="logSequence"/> 
    </clone> 
    <respond/> 
    </inSequence> 

In diesem Fall wird die Nachricht ausgeführt LogSequence, dann wird die Antwort Vermittler gesendet. Danke für Ihre Hilfe.

0

Für Ihren Fall könnten Sie auch tun, die folgende

<api xmlns="http://ws.apache.org/ns/synapse" name="porticApiAsyn" context="/test"> 
<resource methods="POST" url-mapping="/asyn"> 
    <inSequence> 
    <log> 
     <property name="message" value="asyn"/> 
    </log> 
    <payloadFactory media-type="json"> 
     <format>{"message":"asyn test"}</format> 
     <args/> 
    </payloadFactory> 
    <clone continueParent="true" sequential="true"> 
     <target sequence="logSequence"/> 
     <target> 
      <sequence> 
      <respond/> 
      </sequence> 
     </target> 
    </clone> 
    </inSequence> 

Ich denke, es sollte auch funktionieren und ist vielleicht besser lesbar

+0

Danke Nicolas für deine Unterstützung. Ich werde diese Funktion hinzufügen. –

Verwandte Themen