Ich habe eine Camel-Anwendung, die einen RESTFul-Dienst aufruft.So kommunizieren Sie Ausnahmen zwischen Routen in Camel
ich eine RESTful und eine SOAP-Schnittstelle für meine Kunden
aussetzen Sowohl die RESTful und die SOAP-Routen eine gemeinsame Route Aufruf am Ende, die tatsächlich den Anruf an den RESTful Service macht.
Also, es ist wenig wie
<camel:route>
<camel:from uri="RESTFUL_INTERFACE" />
<camel:to uri="direct:CALLEXTERNAL_REST_SERVICE" />
<camel:to uri="ADAPT_RESPONSE" />
</camel:route>
<camel:route>
<camel:from uri="SOAP_INTERFACE" />
<camel:to uri="direct:CALLEXTERNAL_REST_SERVICE" />
<camel:to uri="ADAPT_RESPONSE" />
</camel:route>
<camel:route>
<camel:from uri="direct:CALLEXTERNAL_REST_SERVICE" />
<camel:to uri="EXTERNAL_RESTFUL_SERVICE" />
</camel:route>
Wenn mein Aufruf an EXTERNAL_REST_SERVICE fehlschlägt (Verbindung zum Beispiel verweigert), dann brauche ich verschiedene Aktionen in meinem REST und SOAP-Routen zu nehmen. Soweit ich das beurteilen kann, gilt onException
nur für die Route, in der es angegeben ist.
Wie kommuniziere ich den Fehler in direct:CALLEXTERNAL_REST_SERVICE
zurück zu den "äußeren" Routen?
Ich bin ziemlich neu in Camel - Was ist ein CBR? – DaveH
Inhalt basierte Router: http://camel.apache.org/content-based-router.html –
Ok - danke - aber woher sollte diese Route wissen, was es Herkunft war? Wie würde es wissen, dass es, wenn es auf eine REST-Anforderung antwortet, einen HTTP 500-Code mit JSON zurückgeben sollte, während wenn es von einer SOAP-Anfrage stammte, es HTTP 200 mit einer SOAP FAULT-Nachricht zurückgeben sollte? – DaveH