в DLQ (очередь недоставленных писем) во время разработки. Это происходит, когда я читаю одно и то же
сообщение несколько раз, не подтверждая его (путем остановки отладчика в Visual
Studio 2022), а затем, наконец, подтверждаю его.
Сценарий разработки
Во время разработки мне нужно неоднократно тестировать логику обработки сообщений. Мой рабочий процесс:
- Прочитать сообщение из очереди (без подтверждения)
- Отладить логику обработки в Visual Studio 2022
- Остановить отладку перед подтверждением сообщения
- Повторить шаги n раз с одним и тем же сообщением
- Наконец подтвердить сообщение после завершения отладки
перемещаются в DLQ.
Настройка соединения
Код: Выделить всё
// Create connection factory
var connectionFactory = new NMSConnectionFactory(queueUrl);
// Create connection
var connection = connectionFactory.CreateConnection(userName, password);
// Create session with IndividualAcknowledge mode
var session = connection.CreateSession(
AcknowledgementMode.IndividualAcknowledge);
// Create queue destination with prefetch settings
var destination = session.GetQueue(
$"{queueName}?consumer.prefetchSize=1&consumer.dispatchAsync=false");
// Create consumer
var consumer = session.CreateConsumer(destination);
// Start connection
connection.Start();
Код: Выделить всё
var message = consumer.Receive(TimeSpan.FromSeconds(5));
if (message != null)
{
// Process message (debugging happens here)
ProcessMessage(message);
// Acknowledge after debugging
message.Acknowledge(); //
Подробнее здесь: [url]https://stackoverflow.com/questions/79798781/single-message-repeatedly-read-without-acknowledgment-moves-all-messages-to-dlq[/url]
Мобильная версия