Я использую Azure Service Bus SDK (стандартная версия .NET) для получения сообщений из очереди и их импорта в базу данных SQL.
Я использую ForEachAsync метод для повышения пропускной способности.
var receiver = new MessageReceiver(serviceBusConnectionString, queueName);
while (true)
{
var messages = await receiver.ReceiveAsync(100);
if (messages != null)
{
await ForEachAsync(messages, 10, async message =>
{
var success = await ProcessMessageAsync(message);
if (success)
await receiver.CompleteAsync(message.SystemProperties.LockToken);
else
await receiver.DeadLetterAsync(message.SystemProperties.LockToken);
});
}
};
В метриках Azure я вижу больше исходящих сообщений, чем входящих, что означает, что этот код получает одно и то же сообщение несколько раз.
Что может быть не так?