public function deferExchangeMessage(ExchangeEnvelope $deferredExchange, $endpointURI = null)
    {
        $exchange = new Exchange($deferredExchange);

        if (!$endpointURI) {
            $oldExchange = $deferredExchange->getBody();
            $endpointURI = $oldExchange->getHeader(Exchange::HEADER_FROM);
        }

        $endpoint = $this->getEndpointFactory()->createEndpoint($endpointURI, EndpointFactory::MODE_PRODUCE);

        $endpoint->produce($exchange);
    }