2
respostas

Restaurante não aparece no ItemService

Fiz o mesmo que o professor fez nas aulas, porém o restaurante não está aparecendo no ItemService.

O meu projeto está no meu repositório do GitHub. Se alguém puder me ajudar, eu agradeço muito!

2 respostas

Olá, André! Tudo bem?

Pelo que pude analisar, parece que você seguiu todos os passos corretamente, mas o restaurante não está sendo exibido no ItemService. Vamos tentar resolver isso juntos!

Primeiramente, certifique-se de que o RabbitMqSubscriber está sendo inicializado corretamente no Program.cs do ItemService. O código deve parecer com isso:

builder Service.AddHostedService<RabbitMqSubscriber>();
builder Service.AddSingleton<IProcessaEvento, ProcessaEvento>();

Além disso, verifique se o RabbitMqSubscriber está configurado corretamente para conectar ao RabbitMQ. O código deve ser semelhante a este:

_connection = new ConnectionFactory() { HostName = _configuration ["RabbitMqHost"], Port = Int32.Parse(_configuration["RabbitMqHost"]) }.CreateConnection();

Outro ponto importante é verificar se o mapeamento do RestauranteReadDto para Restaurante está sendo feito corretamente no ItemProfile. O código deve ser algo como:

CreateMap<RestauranteReadDto, Restaurante>()
    .ForMember(dest => dest.IdExterno, opt => opt.MapFrom(src => src.Id));

Por fim, verifique se a porta do RabbitMQ está configurada corretamente no appsettings.json de ambos os serviços. A porta deve ser 5672, como mencionado na aula.

Se tudo estiver configurado corretamente e o problema persistir, sugiro que você verifique os logs do ItemService e do RestauranteService para ver se há alguma mensagem de erro que possa nos dar uma pista do que está acontecendo.

Espero ter ajudado e bons estudos!

Olhando o seu projeto no GitHub, vi que no arquivo ProcessaEvento.cs, dentro do método Processa está com um errinho, e por conta disto não está aparecendo o restaurante no ItemService.

Aonde está:

if (itemRepository.ExisteRestauranteExterno(restaurante.Id)) {
    itemRepository.CreateRestaurante(restaurante);
    itemRepository.SaveChanges();
}

Deveria ser:

if (!itemRepository.ExisteRestauranteExterno(restaurante.Id)) {
    itemRepository.CreateRestaurante(restaurante);
    itemRepository.SaveChanges();
}

Com isso deve funcionar corretamente!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software