//public void SendStartProcessing(string requestId, string callbackRouting)
        //{
        //    SendCallbackMessage(
        //        callbackRouting,
        //        new ChangeStatusCallbackMessage
        //    {
        //        RequestId = requestId,
        //        NewProcessStep = ProcessStep.Processing
        //    });
        //}

        public void SendCompletedWithResult(string requestId, string callbackRouting, byte[] resultBin, string mimeType)
        {
            var msg = new ChangeStatusCallbackMessage
            {
                RequestId      = requestId,
                NewProcessStep = ProcessStep.Completed
            };

            switch (mimeType)
            {
            case "application/octet-stream":
            {
                msg.ResultBin = resultBin;
            }
            break;

            case "application/json":
            {
                msg.ResultObjectJson = Encoding.UTF8.GetString(resultBin);
            }
            break;

            default:
            {
                throw new UnsupportedMediaTypeException(mimeType);
            }
            }


            SendCallbackMessage(
                callbackRouting,
                msg);
        }
 void SendCallbackMessage(string callbackRouting, ChangeStatusCallbackMessage msg)
 {
     try
     {
         _mqPublisher.Publish(new OutgoingMqEnvelop <ChangeStatusCallbackMessage>
         {
             PublishTarget = new PublishTarget {
                 Exchange = _callbackQueue, Routing = callbackRouting
             },
             Message = new MqMessage <ChangeStatusCallbackMessage>(msg)
         });
     }
     catch (Exception e)
     {
         Log.Error("Can't send callback message", e).Write();
     }
 }