У меня есть производитель, который будет ставить в очередь каждый раз, когда сообщение получено через вызов API, и я хочу вернуться только тогда, когда получу подтверждение, что сообщение было получено брокером.
Я узнал, как это сделать, через издателя подтверждает -
using (var connection = factory.CreateConnection())
{
using(var channel = connection.CreateModel())
{
channel.ExchangeDeclare(exchangeName, "topic", true, false, null);
//This enables producer confirm
channel.ConfirmSelect();
var properties = channel.CreateBasicProperties();
properties.Persistent = true;
var body = Encoding.UTF8.GetBytes(message);
channel.BasicPublish(exchangeName, topic, properties, body);
channel.WaitForConfirms();
Console.WriteLine("I sent a message !", message);
}
}
Моя проблема в том, что я не хочу ждать ВСЕХ подтверждений, только те, которые связаны с этим конкретным сообщением. Я не хочу ограничивать это одним потоком / рабочим, и я не хочу ждать, пока все подтвердит.
Библиотека rabbit для js работает с обратным вызовом, который идеально подходит для моего использования - но версия C #, похоже, не поддерживает его.