Я тестирую проект с мертвой буквой с помощью Microsoft Service Bus. Я отправляю 26 сообщений (представляющих алфавит), и я использую программу, которая при получении сообщений случайным образом помещает некоторые из них в очередь с мертвой буквой. Сообщения всегда читаются в режиме подглядывания из очереди мертвых букв, поэтому, как только они туда доберутся, они остаются там. После запуска несколько раз все 26 сообщений будут в очереди с мертвой буквой и всегда останутся там.brokeredmessage microsoft service bus queue ReceiveBatch не получает все сообщения о мертвой букве
Однако, при чтении их, иногда лишь несколько (например, 6) читаются, иногда все 26.
Я использую команду:
const int maxToRead = 200; // It seems one wants to set this higher than
// the anticipated load, obtaining only some back
IEnumerable<BrokeredMessage> dlIE =
deadletterSubscriptionClient.ReceiveBatch(maxToRead);
Там есть перегрузка ReceiveBatch, которая имеет тайм-аут, но это не помогает, и это просто добавляет сложности.
Почему он не получает все 26 сообщений каждый раз, так как он используется в режиме «peek» и сообщения остаются там.
Я могу использовать «Проводник служебных шин», чтобы убедиться, что все сообщения находятся в очереди с недопустимыми сообщениями и остаются там.
В основном это пример тестирования, но можно было бы надеяться, что «ReceiveBatch» будет работать в детерминированном режиме и не очень (плохой) случайным образом ...
смотри также HTTP: // stackoverflow.com/questions/26862747/messagereceiver-receivebatch-not-working-as-intended не работает по назначению, если задан аналогичный вопрос – JosephDoggie
Кто-нибудь знает, как сообщить об этой ошибке Microsoft; Я пробовал, но не смог найти доступную ссылку .... - – JosephDoggie