Request/response tracking

Request/response tracking functionality allows to save internal communication between routes or communication with external systems into database. 

Functionality is disabled by default - see ohf.requestSaving.enable parameter to enable it. There is another parameter ohf.requestSaving.endpointFilter that defines pattern for filtering endpoints URI which requests/response should be saved. See configuration for more details.

Implementation and limitations

Implementation is in core module, package org.openhubframework.openhub.core.reqres.

Default implementation uses standard Camel events that has one possible disadvantage - it's necessary to join request and response together (= two Camel events) and if exchange is changed from sending request until response receive (e.g. using wireTap) then it's not possible to join it. But this limitation is mainly for internal communication, there is no problem with saving request/response to/from external system.

Due to current Camel event emmitting implementation, it is not possible to save only responses, always a request tracking must be enabled as well.

Requests/responses are saved into database, RequestResponseService defines contract. RequestResponseServiceDefaultImpl is default implementation that saves them directly to DB in synchronous manner.