예제 #1
0
        private async Task MessageReceived(object model, BasicDeliverEventArgs ea, IModel channel)
        {
            var inboundMessage    = ea.Body;
            var inboundProperties = ea.BasicProperties;

            var responseProperties = channel.CreateBasicProperties();

            responseProperties.CorrelationId = inboundProperties.CorrelationId;
            responseProperties.ReplyTo       = inboundProperties.ReplyTo;

            var message           = Encoding.UTF8.GetString(inboundMessage.ToArray());
            var workplacesRequest = JsonConvert.DeserializeObject <GetWorkplacesRequest>(message);

            logger.LogInformation("SpaceID received: " + message);

            var workplaces = await workplaceService.FindAllAsync(
                new WorkplaceFilter(workplacesRequest.SpaceId));

            var response = JsonConvert.SerializeObject(
                autoMapper.Map <Response <IEnumerable <GetWorkplaceResponse> > >(workplaces));
            var    responseBytes = Encoding.UTF8.GetBytes(response);
            string routingKey    = ResponseBindingKeys[0];

            channel.BasicPublish(exchange: ResponseExchange,
                                 routingKey: routingKey,
                                 basicProperties: responseProperties,
                                 body: responseBytes);

            channel.BasicAck(deliveryTag: ea.DeliveryTag,
                             multiple: false);
            logger.LogInformation("Reply is sent via " + routingKey + " BindingKey");
        }
        public async Task <ActionResult> GetWorkplaces(
            [FromRoute] Guid officeGuid,
            [FromRoute] Guid spaceGuid)
        {
            var response = await workplaceService.FindAllAsync(new WorkplaceFilter(spaceResponse.Result.SpaceId));

            return(response.Status == ResponseResult.Success
      ? Ok(response.Result)
      : StatusCode((int)response.Error.StatusCode, response.Error.Message));
        }