Как потреблять единственное сообщение RabbitmqC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как потреблять единственное сообщение Rabbitmq

Сообщение Anonymous »

Я настраиваю программу для циклического вызова метода, который считывает одно сообщение из очереди сообщений кролика. Он должен потреблять и обработать одно сообщение, а затем вернуться из метода. < /P>
Моя текущая настройка потребляет два сообщения в очереди, и я понятия не имею, почему.

Код: Выделить всё

public async Task Receive(string custId, string db, ILogger logger)
{
var factory = CreateConnectionFactory();
var connection = await factory.CreateConnectionAsync();
var channel = await connection.CreateChannelAsync();

await channel.BasicQosAsync(prefetchSize: 0, prefetchCount: 1, global: false);

var queue = await QueueDeclareAsync(channel, db);
if (queue.MessageCount is 0) return new Message();

var consumer = new AsyncEventingBasicConsumer(channel);
var messageReceived = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously);

var consumerTag = await channel.BasicConsumeAsync(db, autoAck: false, consumer: consumer);
consumer.ReceivedAsync += async (model, ea) =>
{
var body = ea.Body.ToArray();
var receivedMessage = Encoding.UTF8.GetString(body);

await channel.BasicAckAsync(ea.DeliveryTag, multiple: false);
messageReceived.TrySetResult(receivedMessage);

await channel.BasicCancelAsync(consumerTag);
};

var message = await messageReceived.Task;

return await ProcessReceivedMessage(custId, message);
}
< /code>
Я попытался использовать: < /p>
await channel.BasicQosAsync(prefetchSize: 0, prefetchCount: 1, global: false);
, чтобы ограничить его в одном сообщении, но, похоже, не работает.

Подробнее здесь: https://stackoverflow.com/questions/794 ... mq-message
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»