Как обращаться с Publi sh Подтвердите в RabbitMQ. NET - PullRequest
0 голосов
/ 04 мая 2020

Я новичок в RabbitMQ. Мне нужно знать, как опубликовать sh Подтвердить. NET, потому что мне нужно отправлять и получать ответ от клиента / сервера. Проблема в том, что я не знаю, как правильно обрабатывать publi sh Confirm.

 channel.ConfirmSelect();
 var outstandingConfirms = new ConcurrentDictionary<ulong, string>();

            void cleanOutstandingConfirms(ulong sequenceNumber, bool multiple)
            {
                if (multiple)
                {
                    var confirmed = outstandingConfirms.Where(k => k.Key <= sequenceNumber);
                    foreach (var entry in confirmed)
                        outstandingConfirms.TryRemove(entry.Key, out _);
                }
                else
                    outstandingConfirms.TryRemove(sequenceNumber, out _);
            }

            channel.BasicAcks += (sender, ea) => cleanOutstandingConfirms(ea.DeliveryTag, ea.Multiple);
            channel.BasicNacks += (sender, ea) =>
            {
                outstandingConfirms.TryGetValue(ea.DeliveryTag, out string body);
                Console.WriteLine($"Message with body {body} has been nack-ed. Sequence number: {ea.DeliveryTag}, multiple: {ea.Multiple}");
                cleanOutstandingConfirms(ea.DeliveryTag, ea.Multiple);
            };

            for (int i = 0; i < MESSAGE_COUNT; i++)
            {
                var body = i.ToString();
                outstandingConfirms.TryAdd(channel.NextPublishSeqNo, i.ToString());
                channel.BasicPublish("",
                routingKey: "****",
                basicProperties: null,
                body: Encoding.UTF8.GetBytes(body)); 
            }

Мне нужно получить ответ от клиентского сервера после того, как сообщение уже получено. как "Успешное добавление данных"

Я получаю это из документации rabbitmq (Обработка публикации Издатель подтверждает асинхронно). Но я не знаю, как это работает. Добро пожаловать на обсуждение и учиться у вас, ребята. Поправьте меня, если я не прав, пожалуйста, спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...