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(); } }