예제 #1
0
 public void Handle(Envelope <QueryResult> envelope)
 {
     if (_resultManager.SetQueryResult(envelope.MessageId, envelope.Body))
     {
         if (LogManager.Default.IsDebugEnabled)
         {
             LogManager.Default.DebugFormat("query({0}) is completed.", envelope.MessageId);
         }
     }
 }
예제 #2
0
        public Task <IQueryResult> FetchAsync(IQuery query, int timeoutMs)
        {
            var traceId   = ObjectId.GenerateNewId().ToString();
            var queryTask = _resultManger.RegisterProcessingQuery(traceId, query, timeoutMs);

            Task.Factory.StartNew(() => {
                try {
                    _queryBus.Send(query, new TraceInfo(traceId, ConfigurationSettings.InnerAddress));
                }
                catch (Exception ex) {
                    LogManager.Default.Error(ex);
                    _resultManger.SetQueryResult(traceId, QueryResult.SentFailed);
                }
            });

            return(queryTask);
        }