def dispatch_request(request, queue)
      begin
        if (dispatcher = @dispatchers[queue])
          if (result = dispatcher.dispatch(request))
            exchange = {:type => :queue, :name => request.reply_to, :options => {:durable => true, :no_declare => @options[:secure]}}
            @client.publish(exchange, result, :persistent => true, :mandatory => true, :log_filter => [:request_from, :tries, :persistent, :duration])
          end
        else
          ErrorTracker.log(self, "Failed to dispatch request #{request.trace} from queue #{queue} because no dispatcher configured")
          @request_failure_stats.update("NoConfiguredDispatcher")
        end
      rescue Dispatcher::DuplicateRequest
      rescue RightAMQP::HABrokerClient::NoConnectedBrokers => e
        ErrorTracker.log(self, "Failed to publish result of dispatched request #{request.trace} from queue #{queue}", e)
        @request_failure_stats.update("NoConnectedBrokers")
      rescue StandardError => e
        ErrorTracker.log(self, "Failed to dispatch request #{request.trace} from queue #{queue}", e)
        @request_failure_stats.update(e.class.name)
      end
      true
    end
def dispatch_request(request, queue)
      begin
        if (dispatcher = @dispatchers[queue])
          if (result = dispatcher.dispatch(request))
            exchange = {:type => :queue, :name => request.reply_to, :options => {:durable => true, :no_declare => @options[:secure]}}
            @client.publish(exchange, result, :persistent => true, :mandatory => true, :log_filter => [:request_from, :tries, :persistent, :duration])
          end
        else
          ErrorTracker.log(self, "Failed to dispatch request #{request.trace} from queue #{queue} because no dispatcher configured")
          @request_failure_stats.update("NoConfiguredDispatcher")
        end
      rescue Dispatcher::DuplicateRequest
      rescue RightAMQP::HABrokerClient::NoConnectedBrokers => e
        ErrorTracker.log(self, "Failed to publish result of dispatched request #{request.trace} from queue #{queue}", e)
        @request_failure_stats.update("NoConnectedBrokers")
      rescue StandardError => e
        ErrorTracker.log(self, "Failed to dispatch request #{request.trace} from queue #{queue}", e)
        @request_failure_stats.update(e.class.name)
      end
      true
    end
Dispatch request and then send response if any

 === Parameters
 request(Push|Request):: Packet containing request
 queue(String):: Name of queue from which message was received

 === Return
 true:: Always return true