Пример #1
0
        public Task StartAsync(CancellationToken cancellationToken)
        {
            var factory = rabbitMQInteractor.GetConnectionFactory(rabbitMQConfiguration);

            string queueName          = "AddressResults";
            var    rabbitMqConnection = factory.CreateConnection();
            var    rabbitMqChannel    = rabbitMqConnection.CreateModel();

            rabbitMqChannel.QueueDeclare(queue: queueName,
                                         durable: false,
                                         exclusive: false,
                                         autoDelete: false,
                                         arguments: null);

            rabbitMqChannel.BasicQos(prefetchSize: 0, prefetchCount: 1, global: false);

            var consumer = new EventingBasicConsumer(rabbitMqChannel);

            consumer.Received += async(model, ea) =>
            {
                try
                {
                    var body         = ea.Body.ToArray();
                    var message      = Encoding.UTF8.GetString(body);
                    var jsonResponse = JsonConvert.DeserializeObject <AddressResultApi>(message);

                    var dto = addressResultDtoFactory.BuildToAddressRequestResultDto(jsonResponse.AddressRequestId, Convert.ToDouble(jsonResponse.Longitud), Convert.ToDouble(jsonResponse.Latitud));

                    await updateAddressResultInteractor.Update(dto);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }


                rabbitMqChannel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);
            };
            rabbitMqChannel.BasicConsume(queue: queueName,
                                         autoAck: false,
                                         consumer: consumer);

            return(Task.CompletedTask);
        }
        public async Task GetLatitudeAndLongitudeByAddress(AddressRequestMessageDto addressRequestMessage)
        {
            var response = await client.GetAsync($"{baseUrl}/search?street={addressRequestMessage.Street} {addressRequestMessage.Number}&city={addressRequestMessage.Province}&state={addressRequestMessage.City}&country={addressRequestMessage.Country}&postalcode={addressRequestMessage.ZipCode}&format=json&addressdetails=1&limit=1&polygon_svg=1");

            if (response.StatusCode == System.Net.HttpStatusCode.OK)
            {
                var contentStream = await response.Content.ReadAsStringAsync();

                var responseObject = JsonConvert.DeserializeObject <List <Result> >(contentStream);

                var dto = addressResultDtoFactory.BuildToAddressRequestResultDto(addressRequestMessage.Id, Convert.ToDouble(responseObject[0].Lon), Convert.ToDouble(responseObject[0].Lat));

                rabbitMQInteractor.PublishMessage(dto, "AddressResults");
            }
            else
            {
                Console.WriteLine();
            }
        }