Клиент для RabbitMQ - есть ли норм. реализация?
От: Shmj Ниоткуда  
Дата: 01.07.22 07:57
Оценка:
Вот образец, который не всегда работает: https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.cs

Тут для всех случаев всего одно событие RabbitMQ, т.к. иначе при пересоздании после сбоя пришлось бы заново подписываться на каждое из событий:

  Скрытый текст
channel.CallbackException += (sender, ea) =>
        {
            _logger.LogWarning(ea.Exception, "Recreating RabbitMQ consumer channel");

            _consumerChannel.Dispose();
            _consumerChannel = CreateConsumerChannel();
            StartBasicConsume();
        };


Но еще фигня в том, что в некоторых случаях CallbackException не спасет. К примеру, если подтвердить получение BasicAck с неверным ID, то модель "портится" и ее нужно пересоздать. Может быть еще от чего-то портится — хрен знает, но нужно просто пересоздавать. Старая перестает слушать события и все тут — можно даже не узнать что она спортилась, если не подписаться на ModelShutdown.

Есть ли нормальный годный пример как использовать RabbitMQ из .Net Core?
=сначала спроси у GPT=
Отредактировано 01.07.2022 7:58 Shmj . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.