public async Task <RabbitRPC <TResult> > PublishWaitAsync <TResult>(Command <TResult> command, string queueName = null)
        {
            var @return = new RabbitRPC <TResult>();

            try
            {
                @return.MessageTask.StartCounting();
                queueName = string.IsNullOrEmpty(queueName) ? command.GetType().Name : queueName;

                @return.MessageTask.SetQueueName(queueName);

                if (await ExistQueue(queueName))
                {
                    @return.MessageTask.ExistQueue();
                    @return.Data = await _publishMessage.SendAsync(_channel, command, queueName);
                }
                else
                {
                    @return.MessageTask.NotExistQueue();
                    @return.MessageTask.SetMessage("Queue non-existent");
                }
            }
            catch (Exception e)
            {
                @return.MessageTask.SetMessage(e.GetBaseException().Message);
            }
            finally
            {
                @return.MessageTask.StopCounting();
            }

            return(@return);
        }
Пример #2
0
 public GetPostsOfFollowersHandler(FeedContext feedContext, IMediator mediator)
 {
     _feedContext = feedContext;
     _mediator    = mediator;
     _rabbit      = new RabbitRPC <List <FeedPostsResponse> >(RabbitMqChannels.GetPostsOfFollowers);
 }