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